Ich versuche, eine reine x64-Build für einen komplexen Build mit vielen Lösungen (einige für CI, einige für Entwickler) und Hunderte von Projekt und haben den Weg laufen „Fehler MSB8013: Dieses Projekt nicht die Konfiguration und Plattform Kombination von Debug enthält | Win32“x64 build: error MSB8013: Dieses Projekt enthält nicht die Konfiguration und Plattform-Kombination von Debug | Win32
ich reduziert habe es auf eine einfache Konfiguration:
- Lösung A enthält Projekt X & Projekt Y. Projekt X hat ein Projekt Referenz Y. Projekt
- Lösung B enthält auch enthält Projekt X.
Keines der Projekte oder Lösungen enthalten eine Win32-Plattform - es gelöscht worden ist.
Wenn ich bauen Lösung B (als x64), erhalte ich
Fehler MSB8013: Dieses Projekt die Konfiguration nicht enthalten und Platform Kombination von Debug | Win32
Die Fehlermeldung enthält manchmal zusätzliche Informationen:
Dieser Fehler kann auch auftreten, wenn ein anderes Projekt versucht, einerzu folgen 210 Projekt-zu-Projekt Verweis auf dieses Projekt wurde dieses Projekt entladen oder ist nicht in der Lösung enthalten, und das Referenzieren Projekt erstellt nicht mit der gleichen oder einer gleichwertigen Konfiguration oder Platform.
Das Problem ist die Referenzierung Projekt bedeutet „bauen die gleiche oder eine äquivalente Konfiguration oder Plattform.“
Mit Blick auf die Msbuild-Diagnose wird Projekt Y erstellt, da Projekt X einen Projektverweis darauf enthält. Aber die Konfiguration und Plattformeigenschaften werden kurz vor dem Projekt Y gelöscht wird gebaut:
1>Task "MSBuild" (TaskId:28)
1> Removing Properties: (TaskId:28)
1> Configuration (TaskId:28)
1> Platform (TaskId:28)
Als Ergebnis Microsoft.Cpp.Default.props Tritte in und setzt diese Debug | Win32:
1>Task "Message" (TaskId:11)
1> Configuration=Debug (TaskId:11)
1>Done executing task "Message". (TaskId:11)
1>Task "Message" (TaskId:12)
1> Platform=Win32 (TaskId:12)
1>Done executing task "Message". (TaskId:12)
Wie kann ich dies verhindern und msbuild die gewählte Konfiguration & Plattform übergeben?
(Ich verstehe die ultimative Lösung NuGet verwenden Paket-Abhängigkeiten zu verwalten, aber das ist in der kurzen Frist nicht möglich)