【发布时间】:2014-07-10 10:23:48
【问题描述】:
我的问题是“当我在我的构建服务器上构建一个项目时,它没有得到正确的版本。但是当我在本地构建它时,它确实得到了正确的版本”
我怎么知道这个? ...当我打开文件时,在构建服务器上,内容不是它们应该是的,因为它们在 TFS 中。
我正在使用 Visual Studio 2013 和 WIX 3.8。在我的构建服务器上,我有 wix 3.8。
我有一个 WIX 安装程序 (INSTALLER XYZ),它引用了项目 A。 项目 A 里面有一个 configuration.config 文件。 configuration.config 文件对于 MSI 的工作至关重要。当我在本地构建“安装程序 XYZ”并安装它时,一切正常。
当我(在构建服务器上)运行构建时,它会构建“安装程序 XYZ”并生成一个 .msi 文件。当我安装 .msi 文件时出现错误。安装失败。 经过调查,我发现当我在构建服务器上构建时,引用项目 A configuration.config 文件的“安装程序 XYZ”使用的是该文件的旧版本,而不是最新版本。我不明白为什么会这样。
如果我使用在本地构建的 .msi,它可以正常安装,但是当我使用构建在构建服务器上的 .msi 时,它不会安装。
让我解释一下我尝试过的一些事情......
- 除了这个 configuration.config 文件之外,msi 完全相同。我使用了 LessMsi 和 Orca 工具来检查 .msi。
- 当我在构建服务器上构建项目时,我检查了 configuration.config 文件,它与 Project A 中的不同
- 我在构建之前从 TFS 获得了最新信息。在构建之前,我已经从 TFS 获取了特定文件并覆盖了所有文件。
- 我已展开项目 A 并右键单击 configuration.config 文件并选择属性。属性“COPY TO OUTPUT DIRECTORY”设置为 COPY ALWAYS。
- 我的 WIX 安装程序正在正确收集文件。我已经使用
Source="$(var.Connectors.AgentService.TargetDir)"重新创建了我的 .WXS 文件并正确引用了项目 A - 在我的构建服务器上,我删除了所有工作区。
- 我已删除我的构建服务帐户创建的所有工作空间。
- 我的构建定义“Clean Workspace”设置为“All”
- 我已重新启动计算机和构建服务器
总而言之,我知道问题出在哪里,但我不确定是什么原因造成的......有人可以建议吗?
2014 年 5 月 22 日更新
所以我已经进一步调查了,
我在同一个解决方案中有另一个名为 Project.B 的项目 Project.B 还有一个 configuration.config 文件。
似乎正在构建项目 B 中的 configuration.config 文件。我通过更改 project.B configuration.config 文件的内容并重建它来测试这一点。但是,我的 WIX 安装程序引用了项目 A configuration.config 文件。 似乎在同一解决方案中的两个项目之间的构建过程变得混乱。
有人知道为什么会这样吗?
【问题讨论】:
-
所以,第 2 点。 “不一样”从何而来?在构建服务器上执行 ctrl+f 以搜索旧服务器所在的位置。
-
@Erti-ChrisEelmaa 来自 TFS。它获得了该文件的旧版本。例如,如果文件现在是第 4 版,则构建服务器仍然获得第 1 版。但是当我在本地(而不是在构建服务器上)构建时,它会获得第 4 版。
-
听起来很有趣。所以本质上,只是为了确认:这个问题与 WiX 无关?完全是 TFS 问题?
标签: visual-studio tfs build wix build-process