Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用MSBuild,如何从命令行(在过程中应用Web.config转换)构建MVC4解决方案并输出到文件夹?_.net_Deployment_Msbuild_Msdeploy - Fatal编程技术网

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

.net 使用MSBuild,如何从命令行(在过程中应用Web.config转换)构建MVC4解决方案并输出到文件夹?,.net,deployment,msbuild,msdeploy,.net,Deployment,Msbuild,Msdeploy,我认为问题的标题几乎说明了一切,但为了清楚起见,我试图: 从命令行(MSBuild)生成VS2010 ASP.NET MVC4解决方案,并指定解决方案配置(例如发布) 在此过程中为该配置应用任何Web.config转换 将结果输出到本地计算机上的文件夹中(没有IIS、代理、zip文件、FTP、包等,只有一个包含运行该网站所需的所有文件的文件夹) 我已经花了将近一个星期的时间,通过微软的文档(这些文档对我毫无帮助),以及其他关于SO和谷歌搜索的答案,试图弄明白这一点。我不知道我是否只是没有理解它(

我认为问题的标题几乎说明了一切,但为了清楚起见,我试图:

  • 从命令行(MSBuild)生成VS2010 ASP.NET MVC4解决方案,并指定解决方案配置(例如发布)
  • 在此过程中为该配置应用任何Web.config转换
  • 将结果输出到本地计算机上的文件夹中(没有IIS、代理、zip文件、FTP、包等,只有一个包含运行该网站所需的所有文件的文件夹)
  • 我已经花了将近一个星期的时间,通过微软的文档(这些文档对我毫无帮助),以及其他关于SO和谷歌搜索的答案,试图弄明白这一点。我不知道我是否只是没有理解它(这是完全可能的),或者MSBuild/MSDeploy是否真的是目前看起来的那种神秘的混乱


    有没有一个合理简单的方法来实现这一点?救命啊

    如果您正在运行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:precompilebeforeprealish=true
    ,输出将是站点的预编译版本


    一旦你安装了Azure SDK,你通常会创建一个发布配置文件,并简单地使用
    /p:PublishProfile=DeployToFolder
    ,但我已经给了你手动命令行,以防你对新的发布内容不感兴趣。

    这太棒了,Richard,非常感谢!我已经为此奋斗太久了。我对您的答案进行了轻微编辑,添加了配置选项,这是我问题的一部分,但由于篇幅不足,未包含在标题中;我在编辑后对这两种方法都进行了测试,一切都很好。顺便说一句,我确实安装了Azure SDK,但为了正确地将其与VS2010集成,我首先必须使用Web平台安装程序安装
    Windows Azure SDK for.NET(VS2010 SP1)1.8.1-2013年2月
    软件包。很高兴能提供帮助,关于2010版的SDKHi@RichardSzalay,我们的构建服务器上有VS2013,但没有其他功能。为了让上面的MSBuild命令工作,我们是否还需要安装其他东西,例如“Web部署项目”或“Web部署工具”?谢谢:)你不必安装任何东西。但更重要的问题是:当你尝试它的时候发生了什么?微软文档在大多数情况下都是一种过度使用。我一直在阅读msbuild、msdeploy和iis。到目前为止,我的经历就像一条狗在追逐它的尾巴。