Wie teilen Sie sich externe Abhängigkeiten, die zwischen den Visual Studio-Lösungen?
Ich habe ein Java-hintergrund, ich bin also verwendet, um mit Maven Griff alle problem rund um das herunterladen und halten Abhängigkeiten auf dem neuesten Stand. Aber in der .NET Umgebung habe ich noch nicht gefunden, ein guter Weg, um zu verwalten Sie sämtliche externen Abhängigkeiten.
Das größte problem hier ist, dass ich Masse produzieren Lösungen, und Sie alle neigen dazu hängen auf der selben Drittanbieter-dll ist. Aber ich will nicht behaupten, separate Kopien der einzelnen Komponenten unter der jeweiligen Lösung. Also brauche ich eine Möglichkeit, die Verknüpfung all der verschiedenen Lösungen auf den gleichen Satz von dll-Dateien.
Erkannte ich, dass eine Lösung sein könnte, enthalten die externen Bibliotheken in einer "Bibliothek-Projekt", die enthalten ist in allen Lösungen und lassen Sie die anderen Projekte Referenzen Sie über Sie. (Oder stellen Sie sicher, dass verweisen auf die externe dll ' s aus dem gleichen Ort bei allen Projekten.)
Aber gibt es bessere Möglichkeiten, dies zu tun?
(Vorzugsweise über irgendeine Art von plug-in für Visual Studio.)
Habe ich mir angeschaut, die Visual Studio Abhängigkeiten-Manager und es scheint wie eine perfekte übereinstimmung, aber habe jemand versucht, es für real? Ich habe auch gesehen, das .NET-ports von Maven, aber leider war ich nicht zu beeindruckt von der status dieser. (Aber bitte, gehen Sie vor und empfehlen Sie jemand, wenn Sie denken, ich sollte Ihnen noch einmal zu versuchen.)
Also, was wäre der intelligenteste Weg, um dieses problem anzugehen?
Update:
Ich erkannte, dass ich brauchte, um zu erklären, was ich meinte mit Verlinkung auf die gleichen dll ' s.
Eines der Dinge, die ich versuche zu erreichen ist, um zu vermeiden, daß die verschiedenen Lösungen auf verschiedenen Versionen der einzelnen Komponenten. Wenn ich ein update einer Komponente auf eine neue version, es sollte aktualisiert werden, für alle Lösungen, die bei der nächsten build. Das würde mich zwingen stellen Sie sicher, dass alle Lösungen up to date mit den neuesten Komponenten.
Update 2:
Beachten Sie, dass dies ist eine alte Frage, die gestellt wird, bevor tools wie NuGet oder OpenWrap existierte. Wenn jemand bereit ist, eine mehr up-to-date, bitte gehen Sie weiter, und ich werde ändern Sie die akzeptierte Antwort.
- Welche Art von source-control-tool verwenden Sie?
- SVN aber dies ist keine Voraussetzung für eine gute Lösung. Ich kann einfach Umschalten Umgebung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Suchen Sie einen Ort zum speichern der Baugruppen. Zum Beispiel Lagere ich die .Net-core-Baugruppen wie folgt:
<branch
>\NetFX\2.0527\
*<branch
>\NetFX\3.0\
*<branch
>\NetFX\3.5\
*<branch
>\NetFX\Silverlight 2\
*<branch
>\NetFX\Silverlight 3\
*Verwenden Sie die ReferencePath-Eigenschaft in MSBuild (oder AdditionalReferencePath im Team-Build), um zu zeigen Sie Ihre Projekte in die entsprechenden Pfade. Für Einfachheit, einfache Wartung und, ich habe 1 *.Ziele-Datei, die kennt jedes solche Verzeichnis; alle meine Projekte Importieren, die Datei.
BEARBEITEN
In Reaktion auf das update in der Frage, lassen Sie mich hinzufügen: ein weiterer Schritt:
4) Stellen Sie sicher, jede assembly-Verweis in jede Projekt-Datei verwendet die vollen .Net strong name und nichts anderes.
Schlecht:
Gut:
Vorteile der letzteren format:
Zugabe zu dem, was alle anderen sagt, im Grunde kommt es auf zwei Dinge:
Als Richard Berg Punkte aus, die Sie verwenden können, ReferencePath und/oder AdditionalReferencePath zu lösen #2. Wenn Sie mit msbuild in Ihren build-Prozess (in unserem Fall verwenden wir CruiseControl anstelle von MS-Team zu Bauen), Sie kann auch passieren ReferencePath, um es auf der Kommandozeile. Zu lösen #1, die ich gefunden habe,svn:externals, um nützlich zu sein (wenn Sie mit SVN).
Meine Erfahrung mit Maven ist, dass es die Weise ist, die overkill für die meisten Zwecke.
Normalerweise habe ich eine eigene Ordnerstruktur auf der source-control für externer oder Interner Abhängigkeiten, und diese filders haben die Baugruppen nach der build-oder Versionsnummer, zum Beispiel
public\External\libraries\Nunit\2.6\
oder
Public\Internal\libraries\Logger\5.4.312\
innen die Lösungen alle Projekte, die mit beliebigen Abhängigkeiten fügt nur einen Verweis auf diesen Versammlungen in der öffentlichkeit interner oder externer Ordner.