Der Unterschied zwischen Projekt und dll-Abhängigkeiten in .Net in den letzten kompilierten Assembly
-
02-10-2019 - |
Frage
Lets sagen, ich habe zwei Projekte A und B. A hängt von B. ich dies auf zwei Arten angeben:
- Neue A und B in der gleichen Lösung, und geben Sie B als Projektabhängigkeit von A. Dies zeigt sich in A des msbuild Projekt als "ProjectReference" Knoten.
- Fügen Sie einen Verweis auf die kompilierte DLL B als Abhängigkeit von A. Diese zeigt in der msbuild Projekt als „Referenz“ node nach oben
Meine Frage ist, wenn ich die Versammlung für A bauen habe, gibt es einen Unterschied in der endgültigen Ausgabe zwischen diesen beiden Methoden.
Ich habe versucht, ein paar einfache Projekte zu schaffen, welches Modell dieser Beziehung und einen Vergleich versucht - aber verschiedene Vergleichstools sagen mir verschiedene Dinge. In Erwartung etwas zu schreiben, das diese Dateien Byte-für-Byte-Vergleich, ich frage mich, wenn Sie Leute etwas darüber wusste. Insbesondere wird es einen Unterschied im Verhalten der Baugruppe aufgebaut, wenn ich anstelle eines Projekts Referenz dll Referenz verwenden.
Lösung
Wenn das Projekt B Quellen nicht zwischen zwei geändert haben baut Projekt A, wird es keinen Unterschied im Verhalten des Projekts A ausgegeben. Wenn Projekt B Quellen geändert haben jedoch, wird es als ein Projekt von Projekt A Referenzierung verursacht Projekt B und neu aufgebaut werden. Dieser Unterschied ist, was Ihre Wahl, wie zum Referenzprojekt B aus Projekt A bestimmt:
-
Wenn Sie besitzen die Quelle von Projekt B und Projekt A, und sie sind eng gekoppelt sind, oder wenn sie beide unter der aktiven Entwicklung und Projekt B erfährt oft Änderungen seiner öffentlichen Schnittstelle zu brechen, wollen Sie Referenzprojekt B als Projekt. Dies würde sicherstellen, dass Projekt A immer in seinem Build nutzt die meisten up-to-date Ausgabe des Projekts B.
-
Wenn Projekt B externe Abhängigkeit ist, dass Sie entwickeln sich nicht selbst, oder Sie haben nicht die Quellen, oder wenn es bereits versendet worden ist und Sie können nicht Version mit Projekt Modifiziertes Schiff, Sie wollen die vorgefertigten Projekt B Ausgang zu verweisen, Sie entwickeln und testen mit der gleichen Version von Projekt B zu gewährleisten, die am ehesten auf den Computern der Benutzer sein soll.
Andere Tipps
als Projektverweis Hinzufügen hat nur den Vorteil, dass die Montage „B“ bei Bedarf automatisch erstellt wird.
Nach der Montage "A" gebaut wird, gibt es keinen Unterschied.