6

Wir haben viele verschiedene Lösungen/Projekte, die von verschiedenen Teams verwaltet werden. Unsere Lösung muss auf mehrere Projekte verweisen, die einem anderen Team gehören. Wir möchten diese Abhängigkeiten nicht als Projektreferenzen hinzufügen, da wir nicht beabsichtigen, diesen Code zu ändern, sondern ihn nur verwenden möchten. Außerdem haben wir bereits einige Projekte in unserer Lösung und möchten nicht noch mehr hinzufügen, da dies Visual Studio verlangsamen wird. Daher erstellen wir diese Projekte in einer separaten Lösung und fügen sie als Dateireferenzen zu unserer Lösung hinzu.Verwalten interner Abhängigkeiten von Drittanbietern

Meine Frage ist, wie verwalten Menschen diese Arten von Abhängigkeiten? Sollte ich nur einen automatisierten Prozess haben, der nach Änderungen an diesen Projekten sucht, sie erstellt und die DLLs in unserer Quellcodeverwaltung überprüft, nach denen wir sie wie andere Abhängigkeiten von Drittanbietern behandeln? Gibt es eine empfohlene Vorgehensweise?

+0

Sind nicht "interne" und "3rd Party" orthogonale Begriffe? :-) – Gray

Antwort

1

Eine Lösung, obwohl es nicht unbedingt das ist, was Sie suchen, ist, dass jedes abhängige Subsystem eine Freigabe durchführt. Diese Version könnte in Form einer MSI-Installation oder nur einer Netzwerkfreigabe von Assemblys vorliegen. Wenn eine wesentliche Änderung vorgenommen wird, könnte das Team Sie wissen lassen, und Sie könnten die Installation oder ein Skript ausführen, um die Dateien zu kopieren.

Sobald Sie die Freigabe erhalten haben, können Sie sie in den GAC einfügen, so dass Sie sich keine Gedanken darüber machen müssen, sie in Ihre Projektordnerordner zu kopieren.

Eine andere Lösung, vorausgesetzt, Sie verwenden einen Build-Server oder eine kontinuierliche Integration irgendeiner Art, besteht darin, einen Post-Build-Schritt zu haben oder die Dateien zu prozessieren. Dann könnten die Entwickler der anderen Teams die neuen Dateien abrufen oder sie durch ein Skript oder eine Fledermausdatei lokal herunterladen.

BEARBEITEN - EINE ANDERE LÖSUNG Es ist vielleicht am besten zu fragen, warum haben Sie diese Abhängigkeiten? Benötigen Sie sie wirklich lokal, wenn Sie Ihren Teil der Anwendung erstellen? Können Sie die Abhängigkeiten in Ihrer Lösung ausspionieren, indem Sie Komponententests programmieren, erstellen und ausführen? Die tatsächliche Anwendung würde diese in Ihren DEV/Test/Prod-Umgebungen verbinden. Ihre Lösung entkoppelt und davon abhängig zu halten, kann eine bessere Lösung für das einzelne Team sein. Lassen Sie die Integration und Kopplung, wenn die Anwendung in einer realen Umgebung ausgeführt wird.

+0

Die erste Lösung verwenden wir derzeit. Ich mag dieses nicht, weil Teammitglieder Sie nicht immer informieren und Sie veraltete Version der DLL verwenden. Die CI-Lösung ist das, was wir derzeit in Betracht ziehen, aber wir haben daran gedacht, dass das CI diese Abhängigkeiten erstellt und sie in die Versionskontrolle eingibt, damit ein Entwickler sie automatisch bekommt, wenn er sie am spätesten bekommt. –

+0

Ich habe schon gesehen, wie Teams auf diese Weise Binaries zur Quellcodeverwaltung befördern. Es funktioniert. In der Regel ist das Übergeben von Binärdateien in die SOURCE-Steuerung jedoch keine bewährte Methode. –

1

(keine kompletten Antwort, aber nach wie vor:)
Jede Lieferung besser wird in einer Datei/Binär-Repository gespeichert, wie zu einem VCS Gegensatz verwendete Quellen Geschichte zu verwalten.

Wir bevorzugen die Lieferungen in einem Repo wie Nexus Verwaltung, und wir sind mit maven die richtigen Abhängigkeiten zu kommen.
Auch wenn diese Tools mehr Java-orientiert sein können, kann Nexus alles speichern, und maven ist nur dazu da, die pom.xml jedes Artefakts zu lesen und die richtigen Abhängigkeiten zu berechnen.

Verwandte Themen