Führen Sie MSBuild aus, beachten Sie die nicht geladenen Projekte

8

In Visual Studio können Sie ein Projekt entladen, und wenn Sie die Lösung erstellen (Rechtsklick / Build), wird das entladene Projekt nicht erstellt. Wenn Sie jedoch MSBuild über die Befehlszeile ausführen, wie folgt:

%Vor%

Das Projekt ist gebaut. Gibt es eine Möglichkeit, MSBuild zu veranlassen, die in Visual Studio entladenen Projekte zu respektieren?

Die Situation ist, dass wir eine Lösung mit einer Reihe von Projekten haben. Eine davon benötigt spezielle Software zum Erstellen, und zwar auf unserer Build-Maschine, aber nicht auf allen Entwicklungsmaschinen. Das bedeutet, dass ich keinen direkten Befehlszeilen-Build erstellen kann oder es fehlschlägt, wenn es auf das Rogue-Projekt stößt.

Irgendwelche Ideen?

[EDIT: MSBuild muss dazu in der Lage sein, da Visual Studio MSBuild verwendet, um das Erstellen auszuführen. Was macht VS, was die Befehlszeile nicht tut?]

    
Steve Cooper 24.11.2010, 10:57
quelle

3 Antworten

6

MSBuild weiß nichts über den geladenen Status des Projekts in einer Lösung. Sie können also nicht versuchen, dies zu tun.

Als Alternative könnten Sie eine neue Build-Konfiguration namens BUILD_MACHINE definieren (mit dem Menü Build -> Configuration Manager ). Aktivieren Sie in dieser Build-Konfiguration die Erstellung aller Ihrer Projekte. Dies ist dann die Konfiguration, die Sie auf Ihren Maschinen aufbauen. Wenn Sie das Erstellen eines bestimmten Projekts in den Buildkonfigurationen Debug und Release deaktivieren (mit den gleichen Menüoptionen), können Sie diese Konfigurationen auf Ihrem Entwicklungscomputer erstellen, ohne das System entladen zu müssen das Projekt, das du nicht bauen willst.

MSBuild berücksichtigt Buildkonfigurationen, so dass Sie Ihre Buildkonfigurationen (z. B. Debug, Release) ohne Build-Build mit Visual Studio oder MSBuild erstellen können und das problematische Projekt nicht erstellt wird.

    
adrianbanks 24.11.2010, 11:16
quelle
1

Die Informationen darüber, ob ein Projekt entladen wird oder nicht, werden nicht in die SLN-Datei, sondern in die Datei xxx.user geschrieben. Daher weiß MSBuild nichts darüber.

Am besten erstellen Sie eine einfache MSBuild-Datei, die nur die Projekte enthält, die überall erstellt werden können, zum Beispiel:

%Vor%

Nur Auszahlungen müssen Sie mit Ihrer Lösungsdatei synchronisieren.

    
stijn 24.11.2010 11:04
quelle
1

Eine mögliche Lösung besteht darin, devenv /build ConfigurationName file.sln anstelle von MSBuild direkt zu verwenden.

In Ihrer Lösung ist das Entladen des Projekts jedoch nicht die richtige Lösung. Wie die Leute vor mir gesagt haben, verwenden Sie eine separate Konfiguration für die Build-Maschine.

    
Ilya 08.11.2011 11:45
quelle