TFS在构建服务器上构建不正确的项目版本,但在本地构建正确的版本

时间:2014-05-21 16:26:05

标签: visual-studio tfs build wix build-process

我的问题是"当我在构建服务器上构建项目时,它没有获得正确的版本。但是当我在本地构建本地项目时,它确实得到了正确的版本"

我怎么知道这个? ...在我打开文件时在构建服务器上,内容不是它们应该是的,因为它们在TFS中。

我正在使用Visual Studio 2013和WIX 3.8。在我的构建服务器上,我有wix 3.8。

我有一个WIX安装程序(INSTALLER XYZ),引用项目A。 项目A中包含 configuration.config 文件。 configuration.config 文件对于MSI的工作至关重要。当我构建"安装程序XYZ"在本地安装它一切正常。

当我运行构建时(在构建服务器上),它构建了#34;安装程序XYZ"并生成.msi文件。当我安装.msi文件时,我收到一个错误。安装失败。 经过调查,我发现当我在构建服务器上构建时,"安装程序XYZ"引用项目A configuration.config 文件使用的是此文件的旧版本而不是最新版本。我不明白为什么会这样。

如果我使用本地构建的.msi,它安装得很好但是当我使用构建服务器上构建的.msi时,它不会安装。

让我解释一下我尝试过的一些事情......

  1. 除了 configuration.config 文件外,msi完全相同。我使用LessMsi和Orca工具来检查.msi。
  2. 当我在构建服务器上构建项目时,我检查了 configuration.config 文件,它与项目A
  3. 中的文件不同
  4. 我在构建之前从TFS获得了最新信息。在构建之前,我已经从TFS获得了特定的并覆盖了所有文件。
  5. 我扩展了项目A并右键单击 configuration.config 文件和所选属性。该物业"复制输出目录"设置为COPY ALWAYS"。
  6. 我的WIX安装程序正在正确收集文件。我已使用Source="$(var.Connectors.AgentService.TargetDir)"
  7. 重新创建了我的.WXS文件并正确引用了项目A.
  8. 在我的构建服务器上,我删除了所有工作区。
  9. 我删除了构建服务帐户创建的所有工作空间。
  10. 我的构建定义" Clean Workspace"设置为"全部"
  11. 我已重新启动计算机和构建服务器
  12. 总而言之,我知道问题是什么,但我不确定导致它的原因......任何人都可以提供建议吗?

    更新22.05.2014

    所以我进一步调查了,

    我在同一个名为Project.B的解决方案中有另一个项目 Project.B还有一个 configuration.config 文件。

    似乎正在发生的是正在构建Project B中的 configuration.config 文件。我通过更改project.B configuration.config 文件的内容并重建它来测试它。但是,我的WIX安装程序引用了项目A configuration.config 文件。 似乎构建过程在同一解决方案中的两个项目之间变得混乱。

    有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

在TFS构建中,所有文件都复制到一个bin文件夹中。但是,Visual Studio具有“每个项目的bin文件夹”结构。

这可以解释为什么你的configuration.config被projectB覆盖。它们都被复制到同一个文件夹中。

您可以通过将此属性添加到构建定义中来再次拆分文件夹结构:

enter image description here

注意标志/p:GenerateProjectSpecificOutputFolder=true