我似乎在处理 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/