使用令牌文件进行TFS 2013 app.config处理的发布经理

时间:2014-11-18 17:45:47

标签: tfs tfs2013 ms-release-management

我似乎在处理app.config和令牌文件时遇到了很多麻烦(我们使用旧版" .11"模板)。

它看起来像当前(使用ReleaseTfvcTemplate.12.xaml),它在构建之后运行标记化。

虽然我可以通过故意将.token文件复制到我的输出文件夹中来使app.config / myapp.exe.config工作(因此递归搜索找到它),但这感觉非常可怕。

作为修复,我很想将第182-230行移到第175行的RunMSBuild任务之前(在那一点创建一个新序列)

这是正确的方法还是我错过了某些文档(或模板的更高版本?)

3 个答案:

答案 0 :(得分:2)

谢谢你们......无论如何,为了将来参考,我确实做了改变。

但是我误解了订单的确切性质,开箱即用,如下:

  • 让项目脱离源代码管理
  • 使用msbuild构建
  • 将.config.token文件复制到.config文件中。 这是在TFS模板中
  • 作为部署到服务器的一部分,然后替换.config文件中的令牌条目。 这是在发布管理器模板中。
  • 测试在msbuild二进制输出文件夹中运行。

如果您使用的是使用app.config文件的项目类型,因为msbuild进程会在msbuild阶段重命名这些output.exe.config,因此您需要创建这个问题并不是真的有效output.exe.config(标记为copy to output)和output.exe.config.token都是如此,因此当post deploy为最终输出时,会正确配置。如果您想要标记一些mstest dll,这也是一个问题,因为这些通常也使用app.config。除非你使用web.config,否则基本上这有点乱。

我们通过使用上面建议的修改(你需要在第175行创建一个序列并将第178-230行移到序列中,这是GetBuildDirectory变量位和if语句)然后添加来解决这个问题。一个额外的部署阶段,它使用新的标记化文件复制回构建服务器,以便mstest可以针对它们运行。

所以我们的新流程如下:

  • 让项目脱离源代码管理
  • 将.config.token文件复制到.config文件上,即通过app.config复制的app.config.token
  • 使用msbuild构建(这意味着我们最终使用tokenised myapp.exe.config和mytests.dll.config)
  • 作为部署到服务器的一部分,然后替换.config文件中的令牌条目。 这是发布模板中的发布管理步骤。
  • 将测试部署回构建服务器上的文件夹(认为这必须是一个固定的文件夹,直到部署了版本管理器的更新4).config文件中的令牌条目被替换(因此我们的集成测试可以使用新的部署的服务器)。 这是发布模板中的发布管理步骤。
  • 测试在构建服务器上的固定文件夹(而不是msbuild输出目录)中运行,因此需要在tfs构建模板中更改测试通配符。

快速最终说明我们不使用该构建目录变量并且它留空了我不相信如果将其设置为值,这将起作用... < / em>的

答案 1 :(得分:1)

使用Release Management替换配置文件中的变量发生在部署时而不是编译时。

当RM部署您的应用时,它会插入正确的变量。

答案 2 :(得分:1)

听起来你遇到了两个问题之一:

  1. 您需要在项目中包含.token文件,并确保将其设置为始终复制,以便将其复制到构建输出文件夹。

  2. 如果您正在构建Web应用程序,我在发布构建过程模板中看到了一个错误,该错误未触及_PublishedWebsites文件夹的内容。我不知道它是否已在Update 4中修复,但在早期版本中它仍然是一个问题。