2

我似乎在处理 app.config 和令牌文件时感到很痛苦(我们使用旧的“.11”模板)。

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

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

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

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

4

3 回答 3

2

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

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

  • 让项目脱离源代码控制
  • 使用 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 构建模板中更改测试通配符。

快速的最后说明我们不使用该构建目录变量并且它保留为空白我不相信如果它被设置为一个值这会起作用......

于 2014-11-20T11:17:47.053 回答
1

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

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

于 2014-11-19T06:29:19.457 回答
1

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

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

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

于 2014-11-19T14:13:11.187 回答