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

Mar*_*ell 9 .net deployment msbuild msdeploy

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

  1. 从命令行(MSBuild)构建VS2010 ASP.NET MVC4解决方案,指定解决方案配置(例如Release)
  2. 在此过程中为该配置应用任何Web.config转换
  3. 将结果输出到本地计算机上的文件夹中(没有IIS,代理,zip文件,FTP,软件包等,只包含运行该网站所需的所有文件的文件)

我一直试图通过微软的文档(这是非常无益的)来解决这个问题近一个星期,关于SO和一般谷歌搜索的其他答案.我不知道我是不是没有得到它(这是完全可能的),或者如果MSBuild/MSDeploy确实是它目前似乎是一个神秘的混乱.

有没有一种相当简单的方法来实现这一目标?请帮忙!

Ric*_*lay 35

如果您运行的是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
Run Code Online (Sandbox Code Playgroud)

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

msbuild Solution.sln /p:Configuration=Release ^ 
                     /p:DeployOnBuild=True ^
                     /p:DeployDefaultTarget=WebPublish ^
                     /p:WebPublishMethod=FileSystem ^
                     /p:DeleteExistingFiles=True ^
                     /p:publishUrl=c:\output
Run Code Online (Sandbox Code Playgroud)

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

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

  • 那是_fantastic_理查德,非常感谢!我一直在努力解决这个问题太久了.我已经略微编辑了你的答案以包括配置选项,这是我的问题的一部分,但由于空间不足而未包含在标题中; 我在编辑后测试了两种方法,一切都很完美. (4认同)
  • 顺便提一下,我_did_安装了Azure SDK,但是为了正确地将它与VS2010集成,我首先必须使用Web Platform Installer安装`Windows Azure SDK for .NET(VS2010 SP1)1.8.1 - 2013年2月`包. (2认同)