【问题标题】:Team Foundation Server build is transforming web.config TWICE, and the second time is wrongTeam Foundation Server build 正在转换 web.config TWICE,第二次出错
【发布时间】:2012-03-15 13:05:09
【问题描述】:

我在 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 参数保留。
  • John,那么在此过程中,连接字符串转换何时发生?作为 MSBuild 过程的一部分,还是在从 MSBuild 调用 MSDeploy 期间?仅供参考,我依赖于通过 TFS Team Build 生成的 .cmd 文件,以及上面在构建定义的 MSBuild Arguments 位置中设置的 MSBuild Args。
  • 它发生在 msdeploy 期间。实际上,转换已经发生,但对于连接字符串,结果在 parameters.xml 文件中。请回答部署后是否转换错误。
  • John,是的,部署后就出错了。由于 web.config 更改了两次,一次大约是 TFS 启动构建的一半,第二次是构建完成然后部署,b/c web.configs 第一次更改是正确的,但第二次更改不正确,我假设它是在部署之后。在创建 .zip 包的同一目录中有一个 SetParameters.xml 文件(另外,TFS Build 生成的 .cmd 文件也在其中),这也是您指的参数 xml 文件吗?
  • 是的,就是这个文件。我自己发现了这个。部署后配置正确。之前,它让我心脏病发作。

标签: msbuild web-config transform tfsbuild msdeploy


【解决方案1】:

编辑 - 修复 因此,我和一些同事在这方面花了一些时间,最终出于不相关的原因重建了我们的环境。重建后,我们开始看到同样的事情发生。我们查看了 IIS Temporary Compressed Files (C:\inetpub\temp\IIS Temporary Compressed Files) 文件夹,发现存储了很多旧信息。我们从该文件夹中删除了所有内容并运行 iisreset,构建按预期运行。

-- 原帖 我有完全相同的问题。我查看了构建服务器上我能想到的每个输出文件,它们都是正确的。但是,当调用 msdeploy 时,转换似乎发生了(基于修改的日期)但做错了。我还尝试在 Web 服务器上获取 deployment.zip 并导入应用程序,它确实部署正确。有谁知道如何拦截来自构建服务器的 msdeploy 调用以查看该命令究竟包含什么。我尝试过 procmon,但运气不佳。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2011-05-15
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    相关资源
    最近更新 更多