Ich bin dabei, NuGet in unseren Software-Entwicklungsprozess einzuführen, sowohl für externe Binärdateien (z. B. Moq, NUnit) als auch für interne Bibliotheksprojekte mit gemeinsamer Funktionalität.Projektreferenzen v NuGet-Abhängigkeiten
TeamCity erstellt NuGet-Pakete aus unseren internen Bibliotheksprojekten und veröffentlicht sie in einem lokalen Repository. Meine modifizierten Lösungsdateien verwenden das lokale Repository für den Zugriff auf die NuGet-Pakete.
Betrachten Sie die folgenden Quellcode Lösungen:
- Company.Interfaces.sln baut Company.Interfaces.1.2.3.7654.nupkg.
- Company.Common.sln enthält einen Verweis auf Company.Interfaces über seine NuGet Paket, und baut Company.Common.1.1.1.7655.nupkg mit Company.Interfaces.1.2.3.7654 als Abhängigkeit enthalten.
- Die Company.DataAccess.sln verwendet das Company.Common nupkg, um Company.Interfaces und Company.Common als Verweise hinzuzufügen. Es erstellt Company.DataAccess.1.0.8.7660.nupkg, einschließlich Company.Common.1.1.1.7655 als abhängige Komponente.
- Company.Product.A ist eine Website-Lösung, die Verweise auf alle drei Bibliotheksprojekte enthält (hinzugefügt durch Auswahl des Company.DataAccess NuGet-Pakets).
Fragen:
Wenn es eine Änderung Company.Interfaces Quellcode ist, muss ich immer neu zu nummerieren und die Zwischenpakete (Company.Common und Company.DataAccess) wieder aufzubauen und die Pakete aktualisieren in Unternehmen.Produkt.A?
Oder dass nicht davon abhängen, ob der Quellcode Änderung war
- ein Bugfix oder
- eine neue Funktion oder
- eine Bruch Änderung?
In Wirklichkeit habe ich 8 Ebenen von abhängigen Bibliothekspaketen. Gibt es Werkzeugunterstützung für die Aktualisierung eines ganzen Paketbaums, falls dies notwendig sein sollte?
Ich weiß über Semantic Versioning.
Wir verwenden VS2012, C# 4.0, TeamCity 7.1.5.
Meinst du sowas? http://candordeveloper.com/2012/12/12/nuget-package-build-a-solution-of-projects/ –
Unsere NuSpec-Dateien werden immer noch von Hand bearbeitet, leider mit einigen Makros für die automatische Versionsersetzung. Was ich meine, ist in Form von automatischem Auslösen der abhängigen Build-Konfigurationen, Aktualisieren von NuGet-Paketen, Einchecken der resultierenden Änderungen (normalerweise .csproj- und packages.config-Dateien) und Fortführen der Kette, bis das Blatt projiziert. –