tfs - 使用 token 文件处理 TFS 2013 app.config 的发布管理器

标签 tfs ms-release-management

我似乎在处理 app.config 和 token 文件时遇到了很多麻烦(我们使用旧的“.11”模板)。

目前(使用 ReleaseTfvcTemplate.12.xaml)看起来正在构建后运行标记化。

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

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

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

最佳答案

谢谢大家...无论如何,为了将来的引用,我确实做了改变。

但是,我误解了开箱即用的顺序的确切性质,如下所示:

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

问题是,如果您使用的项目类型使用 app.config 文件,那么这实际上不起作用,因为 msbuild 进程会在 msbuild 阶段重命名这些 output.exe.config,因此您需要创建两个输出。 exe.config(标记为复制到输出)和一个output.exe.config.token,以便在部署后是最终输出时正确配置。如果您想要标记一些 mstest dll,这也是一个问题,因为它们通常也使用 app.config。基本上这有点困惑,除非您使用 web.config。

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

所以我们的新流程如下所示:

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

最后要注意的是,我们不使用该构建目录变量,并且它保留为空白,我不相信如果将其设置为一个值,这会起作用...

关于tfs - 使用 token 文件处理 TFS 2013 app.config 的发布管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27000622/

相关文章:

tfs - TFS 上的访问被拒绝 - PendChange 权限

deployment - 如何在 Visual Studio Online 中复制任务组?

tfs - 如何在我的脚本 (.proj) 中使用构建定义中设置的 MSBuild 参数

eclipse - 在eclipse中更改TFS本地路径

visual-studio-2008 - 连接到 Team Foundation Server

Azure 2.6 SDK - 在 TFS Online 上找不到 Microsoft.WindowsAzure.targets

powershell - 以编程方式独立于构建触发发布

tfs - EF Code First 迁移以部署旧版本

ms-release-management - 发布卡在 'Rejected' 状态