2

Ich habe ein seltsames Problem beim Erstellen von MSBuild.MSBuild - Race-Bedingung beim Versuch, Projektreferenzen zu erstellen

Ich verwende MSBuild, um eine Lösungsdatei mit/m (paralleler Build) und BuildProjectReferences auf True zu erstellen. Angenommen, ich habe A.vcxproj und B.vcxproj in der sln-Datei mit B mit einem Projektverweis auf A. Was passiert ist Ein Projekt beginnt zuerst zu erstellen und während es in der Mitte der Kompilierung ist, beginnt B-Projekt in einem anderen zu erstellen Prozess (seit Parallel Builds) und es würde Gebäude A aufrufen. Jetzt verursacht dies eine Race-Bedingung, weil wir zwei Prozesse haben, die versuchen, das gleiche Projekt A zu bauen, und ich würde Zugangsprobleme sehen.

Idealerweise sollte MSBuild Build B nicht aufrufen, wenn A das Erstellen nicht abgeschlossen hat oder wenn B aufgerufen wird und dann erkennt, dass A noch erstellt wird, und darauf warten, dass es beendet wird. Nichts davon passiert. Dies geschieht auch nur mit MSBuild - passiert nicht, wenn ich versuche, die Lösungsdatei von VS2015 IDE zu erstellen.

Eine Idee, warum MSBuild so verhält?

+0

Welche MsBuild-Version, welche Visual C++ - Version? Das könnte Einfluss haben. – jessehouwing

+0

VS 2015 und MSBuild 14.0 – comingbacktolife

Antwort

1

fand schließlich die Lösung für mein Problem

MSBuild erwartet, dass die Projektabhängigkeiten auf zwei Arten
1. Im vcxproj selbst, fügen Sie den abhängigen projectreference alle
2. Auch in der SLN-Datei hinzugefügt werden, Definieren Sie die Projektabhängigkeiten.

Der folgende VS-Blog sagt eigentlich das Gegenteil- Zum Beispiel - https://blogs.msdn.microsoft.com/vcblog/2010/02/16/project-settings-changes-with-vs2010/ besagt, dass Projektabhängigkeiten und Projektreferenz analog sind und nur eine spezifische Projektreferenzen verwenden.

Dies kann richtig sein, wenn Sie mit VS IDE aber nicht für MSBuild erstellen. Es benötigt die Projektabhängigkeiten, die sowohl in ProjectReference als auch in ProjectDependencies definiert werden.

Hoffen, das hilft jedem, der in das gleiche Problem wie meins geraten.

Verwandte Themen