我在Process->Advanced->MSBuild Arguments部分设置了一个TFS构建定义,其中包含以下信息:(为了安全起见,本文省略了[]括号内的值)
/p:DeployOnBuild=True
/p:MSDeployPublishMethod=RemoteAgent
/p:MSDeployServiceUrl=[URL]
/p:DeployIisAppPath=[IISPATH]
/p:UserName=[USERNAME]
/p:Password=[PASSWORD]
/p:CreatePackageOnPublish=True
/p:DeployTarget=MSDeployPublish
/p:Configuration=Development
这是我的问题。我在我的web项目中设置了许多配置,开发配置就是其中之一。如果我放弃"/p:Configuration=Development"并构建项目,然后将其自动部署到我们的开发环境中,则web.config转换是错误的。它正在用另一个配置中的信息替换我的连接字符串信息。
如果我将"/p:Configuration=Development"放回MSBuild arg列表中,并在生成过程中在VS2010中打开web.config文件,第一次在IDE外部更改web.config时,我可以看到已经根据Development配置进行了适当的web.config转换,但随后再次更改了web.config文件,然后又回到了不正确的配置。
我的想法是,当打开"/p:Configuration=Development"时,MSBuild是正确的,但无论从MSBuild调用什么过程(我假设是MSDeploy)来将站点实际部署到服务器,都会出错。
哦,我使用的是IIS6服务器,而不是IIS7,所以任何IIS7特定的功能都不会真正帮助我
这里有关于如何解决这个问题的想法吗?
--原始帖子我也有同样的问题。我已经查看了构建服务器上我能想到的每一个输出文件,它们都是正确的。然而,当调用msdeploy时,转换似乎发生了(基于修改的日期),但操作错误。我还尝试过获取deployment.zip并在web服务器上导入应用程序,这确实可以正确部署。有人知道如何拦截来自构建服务器的msdeploy调用,以查看该命令到底包含什么吗。我试过procmon,但运气不太好。