谢谢大家...无论如何,为了将来参考,我确实做出了改变。
但是,我误解了开箱即用的顺序的确切性质,如下所示:
- 让项目脱离源代码控制
- 使用 msbuild 构建
- 将 .config.token 文件复制到 .config 文件上。这是在 TFS 模板中
- 作为部署到服务器的一部分,然后替换 .config 文件中的令牌条目。这是在发布管理器模板中。
- 测试在 msbuild 二进制输出文件夹中运行。
问题是,如果您使用的项目类型使用 app.config 文件,因为 msbuild 进程在 msbuild 阶段重命名这些 output.exe.config,因此您需要同时创建 output.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 文件中的令牌条目。这是发布模板中的发布管理步骤。
- 将测试部署回构建服务器上的文件夹(认为这必须是一个固定文件夹,直到部署发布管理器的更新 4) .config 文件中的令牌条目被替换(因此我们的集成测试可以使用新部署的服务器) . 这是发布模板中的发布管理步骤。
- 测试在构建服务器上的固定文件夹(而不是 msbuild 输出目录)中运行,因此需要在 tfs 构建模板中更改测试通配符。
快速的最后说明我们不使用该构建目录变量并且它保留为空白我不相信如果它被设置为一个值这会起作用......