2013-07-17 96 views
5

我试图通过TFS作为构建的一部分在Visual Studio 2012解决方案中部署双网站项目。我们处于两台不同的Web服务器WIP(正在进行中)和DEV的时间点。TFS/MSBuild构建/发布web部署不会转换web.config文件

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

构建在使用默认调试解决方案配置的WIP服务器上正常工作。 TFS Build中的配置是Any CPU | Debug。

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

但是,当我们使用MSBuild参数运行DEV构建时,我们注意到没有转换发生。我们已经将构建的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 

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

底线是发布的web.config,最终在Web服务器上是Debug配置(即未转换)的默认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项目?

正如你所看到的,我已经创建了一些发布配置文件,因此它们可能会在TFS Build中用于MSBuild参数。

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

回答

1

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

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

+0

奇怪。那么这解决了我的问题!我有一个名为“Deploy”的配置文件,我的配置名称是“Release”。 –

0
/p:DeployOnBuild=True;PublishProfile=app.ui.dev.pubxml 

我不认为.pubxml应该在配置文件的末尾。 应该是这样的

/p:DeployOnBuild=True;PublishProfile=app.ui.dev 
0

我刚刚有这个问题。检查了MSBuild日志,检查了本地ZIP包,检查了Web Deploy推送到远程IIS,并且它始终使用默认配置文件!

原来,我正在查看检查我的QA设置的XML块是否缺少xdt:Transform="Replace"属性!

希望这可以帮助别人。

相关问题