gpt4 book ai didi

asp.net - 如何在不预编译的情况下使用命令行msbuild部署VS2012网站项目?

转载 作者:行者123 更新时间:2023-12-03 07:58:10 25 4
gpt4 key购买 nike

我继承了一个非常大的 VS2012 网站项目(不是 Web 应用程序),并且正在尝试自动化它的部署。项目中有大量循环引用,因此要使用 aspnet_compiler.exe 对其进行预编译,我必须打开固定名称。问题是它导致在我的四核、16gb ram、ssd 开发机器上构建需要大约 20 分钟。以前的开发人员不必处理这个问题,因为他只需将整个源代码复制到生产 Web 服务器即可。

所以在我解决循环引用问题之前,我想至少使用 msdeploy 自动部署项目。我可以在 Visual Studio 中使用发布配置文件,它完全符合我的要求:

  • 构建引用的 DLL 并将它们添加到项目中。
  • web.config 是否转换。
  • 甚至不尝试构建网站,而只是为我打包成一个 zip 文件。

  • 我一生无法弄清楚的是如何让 MSBuild.exe 做同样的事情!
    MSBuild.exe WebProject.vs2012.sln /m /T:Build 
    /p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy

    上面的命令仍然尝试执行aspnet_compiler,这不是我想要的。发布配置文件说它不应该被预编译......但在日志中我看到它正在执行它。

    那么:如何在不预编译的情况下使用 msbuild 部署网站项目?

    最佳答案

    对于网站项目,发布过程并未纳入构建过程。对于网站项目,由于没有正式的构建过程,我们没有什么可以真正扩展的。

    注意:以下内容需要有 VS 2012(或 VS2010)和 Azure SDK最重要的是。这些功能不包含在 VS2012 的 RTM drop 中。

    在 VS 中创建发布配置文件后,将创建以下内容:

  • App_Data/PublishProfiles 下的发布配置文件(.pubxml 文件)
  • 一个 website.publishproj在网站的根目录
  • website.publishproj的目的是为了方便命令行发布。这是对 .csproj/.vbproj 的填写您通常会在使用 Web App 项目时获得。

    如果您想自动发布,您可以使用如下命令。
    msbuild.exe website.publishproj /p:DeployOnBuild=true 
    /p:PublishProfile=<profile-name-no-extension> /p:VisualStudioVersion=11.0

    您不必指定调用了哪些目标。

    关于 VS 中网站正在预编译的消息,这是一个错误。它通过预编译运行,但发布使用配置文件中的设置。该错误应该已在 Visual Studio Update 1 中修复.安装后,您不应看到不必要的预编译步骤。如果您仍然看到,请告诉我。

    关于asp.net - 如何在不预编译的情况下使用命令行msbuild部署VS2012网站项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14819407/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com