我在尝试使用MSBuild构建时遇到了一个奇怪的问题。MSBuild - 尝试构建项目引用时的竞争条件
我正在使用MSBuild构建一个解决方案文件,并将/ m(并行构建)和BuildProjectReferences设置为true。 假设在sln文件中有A.vcxproj和B.vcxproj,B的项目引用为A. 会发生什么事情A项目开始先构建,而在编译过程中,B项目开始构建另一个项目进程(因为并行构建),它会调用building A. 现在这会导致竞争条件,因为我们有两个进程试图构建相同的项目A,我会看到访问问题。
理想情况下,如果A没有完成构建,或者如果确实调用B,那么MSBuild不应该调用构建B,然后检测到A仍在构建并等待它完成。 没有发生这种情况。此外,这只会发生在MSBuild - 如果我尝试从VS2015 IDE构建解决方案文件,则不会发生。
任何想法为什么MSBuild的行为是这样吗?
哪个MsBuild版本,哪个Visual C++版本?这可能会有影响。 – jessehouwing
VS 2015和MSBuild 14.0 – comingbacktolife