gpt4 book ai didi

visual-studio-2012 - TFS/MSBuild 构建/发布 web 部署不会转换 web.config 文件

转载 作者:行者123 更新时间:2023-12-04 21:44:02 25 4
gpt4 key购买 nike

我正在尝试通过 TFS 在 Visual Studio 2012 解决方案中部署一个包含两个网站的项目作为构建的一部分。我们现在有两个不同的 Web 服务器,WIP (正在进行中)和 DEV .

我们希望将不同的连接字符串部署到任一服务器,以便它们可以连接到不同的数据库。我们已经在带有 Visual Studio 和所有配置的开发机器上测试了我们的解决方案,当发布任何 Web 项目时,web.config当我们检查 Web 服务器时,连接字符串按预期转换。

构建在 WIP 上运行良好使用默认调试解决方案配置的服务器。 TFS Build中的配置是Any CPU|Debug。

对于下一个配置 ( DEV ),我们确信 Web 项目都通过 Visual Studio 2012 发布到 Web 服务器,并且 web.config文件转换。

但是,当我们运行 DEV 时使用 MSBuild 构建参数,我们注意到没有发生转换。我们已将构建项目的构建项目部分中的配置发送至:任何 CPU|Dev。

/p:VisualStudioVersion=10.0 /p:DeployOnBuild=True;PublishProfile=app.ui.dev.pubxml /p:DeployTarget=MsDeployPublish /p:MsDeployServiceUrl=https://server-dev-hrtech:8172/MSDeploy.axd /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=WMSVC  /p:AllowUntrustedCertificate=True /p:Username=username /p:Password=password /p:_WPPCopyWebApplication=True /p:PipelineDependsOnBuild=False

当我们查看构建日志和输出目录时 - 我们可以在 obj/Debug 中看到编译的程序集目录而不是 obj/Dev目录如我们所料。在日志中,我们可以清楚地看到 /p:Configuration="Dev"正如我们所期望的那样。

底线是已发布的 web.config最终出现在 Web 服务器上的是默认值 web.config调试配置中的文件(即未转换)。就好像 MSBuild 无法看到解决方案参数中传递的配置参数一样。

我现在已经尝试在我的开发机器上从命令行运行 msbuild 来尝试理解为什么会发生这种情况。

通过剥离通过 TFS 构建发送的 MSBuild 参数,我可以看到这不会转换 Web 配置:
msbuild "app-no database.sln" /t:app_ui:Rebuild /P:TransformConfigFiles=true /p:Configuration=Dev  /p:Platform="Any CPU" /p:MSDeployServiceUrl=https://app-dev-hrtech:8172/MSDeploy.axd /p:Username=username /p:Password=password /p:DeployOnBuild=True /p:PublishProfile=app.ui.dev.pubxml /p:VisualStudioVersion=11.0 > build.log

我可以修改它并使用 MSBuild 直接构建项目文件。我发现下面的命令确实改变了 web.config已发布应用程序的文件:
msbuild app.ui\app.ui.csproj /p:Configuration=Dev  /p:MSDeployServiceUrl=https://app-dev-hrtech:8172/MSDeploy.axd /p:Username=username /p:Password=password /p:DeployOnBuild=True /p:PublishProfile=app.ui.dev.pubxml /p:VisualStudioVersion=11.0 /p:AllowUntrustedCertificate=True > build.log

问题是这将很难作为 TFS 构建的一部分运行,其中它们是多个项目,其中一些用于网站,另一些用于 Windows 服务器等。

如何使用第一个命令,但对其进行修改以正确转换 Web 项目?

正如您所看到的,我创建了一些发布配置文件,因此它们可能可以用于 MSBuild 参数以及 TFS 构建。

PS:我们在服务器上使用 Visual Studio 2012、TFS 2010、Windows 2008R2,在开发机器上使用 Windows 7。

最佳答案

我遇到过这个问题,关于如何通过发布配置文件发布网站,这个 article是我见过的最好的。

对于您的情况,您似乎需要使配置文件名称与配置名称相同,例如使用 Dev.pubxml 和 Web.Dev.config。

关于visual-studio-2012 - TFS/MSBuild 构建/发布 web 部署不会转换 web.config 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17697441/

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