Passing MSBuild Arguments to Cake Build Script to produce _PublishedWebsites
Asked Answered
R

2

11

I am currentlly in the process of writing a Cake build script to build a number of ASP.NET MVC sites.

At the moment I am unable to see an option to pass arguments to MSBuild to produce the _PublishedWebsites folder for deployment.

I believe the arguments that I need to pass are:

/p:OutDir=$(build.stagingDirectory)
/p:DeployOnBuild=true
/p:WebPublishMethod=Package
/p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true 

If there is an alternative approach which produces the same output content just not in the same folder directory that would be fine.

Riviera answered 20/4, 2016 at 13:48 Comment(0)
C
22

The following example should set the correct MSBuild properties when building your website solution from Cake.

MSBuild("./src/Website.sln", new MSBuildSettings()
  .WithProperty("OutDir", "$(build.stagingDirectory)")
  .WithProperty("DeployOnBuild", "true")
  .WithProperty("WebPublishMethod", "Package")
  .WithProperty("PackageAsSingleFile", "true")
  .WithProperty("SkipInvalidConfigurations", "true"));

To set the output directory of the website, simply swap out the "$(build.stagingDirectory)" part with the path to the directory where you want the output to appear.

You can read more about the MSBuild alias in Cake here: http://cakebuild.net/api/cake.common.tools.msbuild/

Cornejo answered 20/4, 2016 at 14:10 Comment(3)
What version of Cake are you using? I am getting errors for DeployOnBuild, WebPublishMethod, PackageAsSingleFile not existing on MSBuildSettings. The documentation linked above also does not list these properties.Grecoroman
They are not properties on MSBuildSettings, they are MSBuild properties.Cornejo
I thought WithProperty was just a fluent way of setting properties on the starting object. Like x.WithProperty("y", 1) would be the same as x.y = 1Grecoroman
I
1

For FileSystem publish it can be done this way:

MSBuild(/**project path**/, settings =>
    settings.SetConfiguration(/**configuration**/)
    .WithProperty("DeployTarget", "WebPublish")
    .WithProperty("DeployOnBuild", /**boolean**/)
    .WithProperty("PackageAsSingleFile", /**boolean**/)
    .WithProperty("WebPublishMethod", "FileSystem")
    .WithProperty("PublishUrl", /**url**/)
);
Isley answered 26/6, 2018 at 13:55 Comment(2)
Configuration is?Nationalize
What version of Cake are you using? I am getting errors for DeployOnBuild, DeployTarget, WebPublishMethod, PackageAsSingleFile not existing on MSBuildSettings. The documentation also does not list these properties.Grecoroman

© 2022 - 2024 — McMap. All rights reserved.