使用MSBuild,如何从命令行构建MVC4解决方案(在此过程中应用Web.config转换)并输出到文件夹?

时间:2013-03-07 14:19:13

标签: .net deployment msbuild msdeploy

我认为问题标题几乎都说了,但为了清楚起见,我试图:

  1. 从命令行(MSBuild)构建VS2010 ASP.NET MVC4解决方案,指定解决方案配置(例如发布)
  2. 在此过程中为该配置应用任何Web.config转换
  3. 将结果输出到本地计算机上的文件夹中(没有IIS,代理,zip文件,FTP,软件包等,只是包含运行该网站所需文件的文件夹
  4. 我一直试图通过微软的文档(这是非常无益的)来解决这个问题近一个星期,关于SO和一般谷歌搜索的其他答案。我不知道我是不是没有得到它(这是完全可能的),或者如果MSBuild / MSDeploy确实是它目前似乎是一个神秘的混乱。

    有没有一种相当简单的方法来实现这一目标?求救!

1 个答案:

答案 0 :(得分:33)

如果您运行的是VS2010:确保安装了Azure 1.7+ SDK(即使您没有发布到Azure,它也会将VS2012发布功能添加到VS2010)

VS2012 +内置了这些功能

msbuild ProjectFile.csproj /p:Configuration=Release ^
                           /p:Platform=AnyCPU ^
                           /t:WebPublish ^
                           /p:WebPublishMethod=FileSystem ^
                           /p:DeleteExistingFiles=True ^
                           /p:publishUrl=c:\output

或者如果您正在构建解决方案文件:

msbuild Solution.sln /p:Configuration=Release ^ 
                     /p:DeployOnBuild=True ^
                     /p:DeployDefaultTarget=WebPublish ^
                     /p:WebPublishMethod=FileSystem ^
                     /p:DeleteExistingFiles=True ^
                     /p:publishUrl=c:\output

无论哪种方式,您也可以设置/p:PrecompileBeforePublish=true,输出将是网站的预编译版本。

安装Azure SDK之后,您通常会创建一个发布配置文件,只需使用/p:PublishProfile=DeployToFolder,但我已经为您提供了手动命令行,以防您对使用新版本全部内容感兴趣出版物。