我的问题是"当我在构建服务器上构建项目时,它没有获得正确的版本。但是当我在本地构建本地项目时,它确实得到了正确的版本"
我怎么知道这个? ...在我打开文件时在构建服务器上,内容不是它们应该是的,因为它们在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时,它不会安装。
让我解释一下我尝试过的一些事情......
Source="$(var.Connectors.AgentService.TargetDir)"
总而言之,我知道问题是什么,但我不确定导致它的原因......任何人都可以提供建议吗?
所以我进一步调查了,
我在同一个名为Project.B的解决方案中有另一个项目 Project.B还有一个 configuration.config 文件。
似乎正在发生的是正在构建Project B中的 configuration.config 文件。我通过更改project.B configuration.config 文件的内容并重建它来测试它。但是,我的WIX安装程序引用了项目A configuration.config 文件。 似乎构建过程在同一解决方案中的两个项目之间变得混乱。
有人知道为什么会这样吗?
答案 0 :(得分:0)
在TFS构建中,所有文件都复制到一个bin文件夹中。但是,Visual Studio具有“每个项目的bin文件夹”结构。
这可以解释为什么你的configuration.config被projectB覆盖。它们都被复制到同一个文件夹中。
您可以通过将此属性添加到构建定义中来再次拆分文件夹结构:
注意标志/p:GenerateProjectSpecificOutputFolder=true