MSBuild - 项目依赖关系构建顺序异常

时间:2014-02-14 09:48:23

标签: msbuild dependencies

我们有一个MSBuild .proj文件,用于构建和运行大量项目。它有彼此的文件引用。由于它是文件引用,我们在解决方案上维护项目依赖项列表,以便MSBuild能够识别执行项目的顺序。

我们最近遇到了一个问题,我们的美国开发团队在一个项目中添加了一个新的引用,但没有更新依赖项列表。这可以在本地和服务器上为它们构建。然而对于英国团队而言,所有开发人员的构建始终失败。

我试图理解为什么会这样。我唯一能想到的是,当两个项目基本上排在同一水平时,我们的文化会导致构建顺序略有不同。即如果认为项目A和项目B具有相同的依赖关系,那么两个项目的顺序是任意确定的,这在英国文化与美国文化中可能有所不同。

那就是说,我的机器(它为我打破了)的区域格式设置为英国美国。和位置英国。

这听起来可行吗?还是有更好的解释?

1 个答案:

答案 0 :(得分:0)

更改文化不会解决您在组件输出上进行文件引用而不是对将构建程序集的项目的项目引用的问题。

解决方案文件会映射依赖关系并帮助MsBuild确定构建顺序。当MsBuild处理解决方案时,它将首先将其在内存中转换为MsBuild xml格式,然后通过列出依赖项确定项目顺序,然后通过比较输入文件的上次更新时间与输出来确定是否需要重建项目文件。

在项目中有项目引用时(在项目中,打开References文件夹,删除对输出程序集的引用,然后引用项目本身)。这将修改项目文件,用ProjectReference项目组替换参考项目组。这允许MsBuild在项目级别上进行此确定,并解决必须手动配置项目构建顺序的问题。