我在尝试使用 MSBuild 构建时遇到一个奇怪的问题。
我正在使用 MSBuild 构建一个解决方案文件/m(并行构建)并BuildProjectReferences设置为true.
假设我在 .sln 文件中拥有A.vcxproj和 ,B.vcxproj其中 B 具有对 A 的项目引用。
发生的情况是:A project首先开始构建,在编译过程中,B project开始在另一个进程中构建(因为并行构建),并且它将调用构建 A。
现在这会导致竞争条件,因为我们有两个进程试图构建相同的进程project A,并且我会看到访问问题。
理想情况下,如果 A 尚未完成构建,MSBuild 不应调用构建 B,或者如果它调用了 B,则检测到 A 仍在构建并等待其完成。
这一切都没有发生。另外,这种情况仅在 MSBuild 中发生 - 如果我尝试从 VS2015 IDE 构建解决方案文件,则不会发生这种情况。
知道为什么 MSBuild 会这样吗?
msbuild project-reference race-condition parallel-builds msbuild-projectreference
msbuild ×1