我在嘗試使用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