9 Stimmen

Wie erstellt man ein C#-Projekt ohne Überprüfung der Abhängigkeiten?

Gegeben eine Lösung, bei der:

  • Projekt P1 hat einen Bezug zu P2
  • P2 hat einen Verweis auf P3
  • P3 hat einen Bezug zu P4

Wenn Sie msbuild auf diese Weise aufrufen:

msbuild.exe /v:m "c:\mysolution\p1\p1.csproj"

msbuild prüft alle Projektabhängigkeiten und erstellt bei Bedarf Abhängigkeiten. Die typische Ausgabe ist:

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

  P4 -> c:\mysolution\P4\bin\Debug\P4.dll
  p3 -> c:\mysolution\p3\bin\Debug\p3.dll
  p2 -> c:\mysolution\p2\bin\Debug\p2.dll
  p1 -> c:\mysolution\p1\bin\Debug\p1.dll

In meinem Fall weiß ich, dass die Abhängigkeiten vorhanden und in Ordnung sind.

Gibt es eine Möglichkeit, nur ein Projekt zu erstellen p1.csproj ohne Überprüfung der Abhängigkeiten? Die Lösung kann mit msbuild oder mit etwas anderem sein.

0 Stimmen

Ich frage mich....könnte ich den c#-Compiler anstelle von msbuild aufrufen und alle Parameter übergeben? Wäre es schwer herauszufinden, welche Parameter ich selbst bei einem großen Projekt mit vielen Referenzen und Abhängigkeiten übergeben muss?

0 Stimmen

Eine verwandte Frage: stackoverflow.com/questions/819031/

0 Stimmen

Danke! Wir verwenden bereits Multi-Prozessor-Builds mit msbuild (/m Option) und für uns macht es einen großen Unterschied: fast 2X schneller.

5voto

Winston Punkte 350

Können Sie bestehen /p:BuildProjectReferences=false zu msbuild, das die Projektreferenz überspringt. Dies hat jedoch eine Einschränkung: Wenn die Konfiguration Ihrer Lösung und die Konfiguration des referenzierten Projekts nicht übereinstimmen, kann msbuild die Zieldatei des referenzierten Projekts nicht auflösen...

hier ist ein kostenloses vs Erweiterungspaket, das Sie herunterladen und ausprobieren können http://visualstudiogallery.msdn.microsoft.com/98de4058-8dc7-435b-9e01-c0f71dace808

gegen Paket: Sharp Build Utility

Ich bin der Autor dieser Erweiterung, ich habe die gleiche Anforderung in der aktuellen Arbeit, genießen Sie dieses Tool...

Im Wesentlichen kann diese Erweiterung den obigen Fall behandeln, der eine Schattenkopie Ihrer Build-Projektdatei erstellt, alle Projektreferenzen in Dll-Dateireferenzen ändert und msbuild mit der Schattenprojektdatei startet.

2voto

Brian Punkte 115257

Was ist das Ziel (warum interessiert es Sie)?

Sie können Baugruppenreferenzen anstelle von Projektreferenzen verwenden (beachten Sie jedoch die Unterschiede zwischen Debug- und Release-Pfad).

1voto

grefly Punkte 1161

Vielleicht können Sie den Konfigurationsmanager in Visual Studio verwenden und alle Projekte außer dem, das Sie erstellen möchten, abwählen.

0voto

Dirk Vollmar Punkte 166522

Informieren Sie sich über die Best Practices von Microsoft zur Strukturierung von Lösungen und Projekten:

Microsoft-Patterns und -Praktiken: Strukturierung von Lösungen und Projekten

Was Sie derzeit haben, ist ein ist ein Einzellösung . Dies ist der Idealfall, der nach Möglichkeit verwendet werden sollte. Bei sehr großen Lösungen wie der Ihren könnte sich eine einzige Lösung jedoch als unpraktisch erweisen.

Sie könnten in Erwägung ziehen, die Lösung zu partitionieren, d. h. separate Lösungen für Teile des Abhängigkeitsbaums zu verwenden. Oder Sie könnten sogar eine so genannte Multilösung verwenden. Lesen Sie den verlinkten Artikel, um sich über die Folgen und Nachteile einer solchen Änderung zu informieren. Vielleicht ist die Verwendung schnellerer Hardware die bessere Option.

0voto

Christopher Painter Punkte 53414

Sie sollten sich ein Produkt namens OpenMake ansehen. Mein leitender Build-Ingenieur hat mir erzählt, dass sie eine Menge mit der Prüfung von Abhängigkeiten und der Parallelisierung von Builds gemacht haben.

OpenMake

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X