oz9*_*999 5 msbuild tfs tfsbuild webdeploy visual-studio-2012
我正在尝试通过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参数运行构建时,我们注意到没有发生转换.我们已将构建的Items to Build部分中的配置发送到:Any 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
Run Code Online (Sandbox Code Playgroud)
当我们查看构建日志和输出目录时 - 我们可以看到obj/Debug目录中的已编译程序集,而不是obj/Dev我们预期的目录.在日志中,我们可以清楚地看到/p:Configuration="Dev"我们所期望的.
底线是已发布的web.config,最终在Web服务器上是web.configDebug配置的默认文件(即未转换).就好像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
Run Code Online (Sandbox Code Playgroud)
我可以修改它并使用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
Run Code Online (Sandbox Code Playgroud)
问题是这将很难作为TFS构建的一部分运行,其中它们是多个项目,一些用于网站,另一些用于Windows服务器等.
我如何使用第一个命令,但修改它以便正确转换Web项目?
正如您所看到的,我已经创建了一些发布配置文件,因此它们可能也可以在TFS Build中的MSBuild参数中使用.
PS:我们使用Visual Studio 2012,TFS 2010,Windows 2008R2用于服务器,Windows 7用于开发机器.
看起来 TFS 2010 Build默认情况下不会调用Transform MSBuild 任务。您需要编辑 TFS 构建定义以添加调用它的新活动,或者编辑项目文件来执行此操作。
Stack Overflow 问题TFS Build 未按预期转换 web.config应该可以帮助您添加新的活动和博客文章将 Web Config 转换与 TFS Build 集成以更改项目文件。
| 归档时间: |
|
| 查看次数: |
8569 次 |
| 最近记录: |