我们有一个用于构建和运行大量项目的MSBuild .proj文件。它们之间具有相互的文件引用。由于它是文件引用的事实,我们在解决方案上维护项目依赖项列表,以便MSBuild能够识别执行项目的顺序。
我们最近遇到了一个问题,我们的美国开发团队添加了一个对一个项目的新引用,但没有更新依赖项列表。无论是在本地还是在服务器上,这都可以很好地构建。然而,对于英国团队来说,所有开发人员的构建都失败了。
我在试着理解为什么会这样。我能想到的唯一一件事是,当两个项目基本上排在同一级别时,我们的文化会导致构建顺序略有不同。也就是说,如果项目A和B被认为具有相同的依赖关系,那么这两个项目的构建顺序是任意确定的,这在英国文化和美国文化中可能是不同的。
也就是说,我的机器(对我来说它坏了)的区域格式设置为英语美国。和英国的位置。
这听起来可行吗?或者对此有更好的解释?
发布于 2014-02-14 21:44:30
更改区域性不会解决这样的问题,即在组件输出上进行文件引用,而不是对将生成程序集的项目进行项目引用。
解决方案文件映射依赖关系,并将帮助MsBuild确定构建顺序。当MsBuild处理解决方案时,它会首先将内存中的解决方案转换为xml格式,然后通过列出依赖项来确定项目顺序,然后通过比较输入文件和输出文件的上次更新时间来确定是否需要重新构建项目。
当项目中有项目引用时(在项目中,打开“引用”文件夹,移除对输出程序集的引用,而改为引用项目本身)。这将修改项目文件,将引用项组替换为ProjectReference项组。这允许MsBuild在项目级别上做出此决定,并解决了必须手动配置项目构建顺序的问题。
https://stackoverflow.com/questions/21775914
复制相似问题