Pakiet NuGet dla TFS Continuous Integration
Staram się, aby nasz proces budowania TFS generował pakiety NuGet z projektów naszego rozwiązania. Staramy się stworzyć prywatne źródło pakietów, więc wszystkie inne produkty wewnętrzne mogą pobierać / aktualizować strukturę przy użyciu NuGet.
Do tej pory mamy proces budowania działający (przez długi czas) i wersjonujący nasze biblioteki, a jedyne, co nam pozostało, to „nuget pack„wszystkie projekty.
Co dotychczas wypróbowałem:
nuget spec * .csproj, a następnie nuget pack * .nuspec;nuget spec * .dll, następnie nuget pack * .nuspec;nuget pack * .csproj bezpośrednio (brak pliku .nuspec);Wszystkie z nich wydają się działać, ale wszystkie z nich wydają się nie udać na etapach, które są mi potrzebne do osiągnięcia sukcesu.
Co robię, wykonując wspomniane kroki:
Nie zależność¹ wymieniona,Nie referencyjne² wymienione;
Nie zależność¹ wymieniona,Nie Na liście odnośników² wszystkie biblioteki DLL z katalogu są spakowane na tym samym .nupkg (bez użycia -IncludeReferencedProjects);
(Najlepsze do tej pory)Trochę zależności1 wymienione,Nie Na liście referencyjnej² znajduje się tylko dll projektu w folderze lib na .nupkg.
¹:Przez zależność rozumiem zależności NuGet, pakiety z NuGet
²:Przez odniesienie rozumiem odniesienia do projektu rozwiązania.
Przykładowy scenariusz:
Rozwiązanie1.sln
- ProjectA
- ProjectB
ProjectA maOdniesienie do projektu do ProjectB. Co jaoczekiwać wydarzenie wygenerowane przez .nuspec:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>ProjectA <- OK</id>
<version>1.2.0.0 < - OK</version>
<title>ProjectA <- OK</title>
<authors>My Company <- OK</authors>
<owners>My Company <- OK</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Description</description>
<copyright>OK</copyright>
<dependencies>
<dependecy id="ProjectB" Version="1.2.0.0" /> <<<<<<---- NOT HAPPENING!
</dependencies>
</metadata>
</package>
Wymienione są niektóre zależności nuget, ale nie wszystkie (nawet jeśli znajdują się w pakiecie packages.config z projektu refeered). Na przykład: Mam projekt, który zależy od 4 innych pakietów NuGet, tylko 2 są wymienione jako zależności na wygenerowanym pliku .nuspec.
Ważna informacja:
Każdy projekt ma swoje własne packages.config, sposób, w jaki buduje go NuGet;Folder rozwiązania zawiera folder pakietów ze wszystkimi pakietami, do których istnieją odwołania;Próbowałem już Nugettera (XAML złamany w VS 2012.3 i TFS 2012, nie można go otworzyć)Próbowałem jużto, również nie zawiera poprawnie zależności i odniesień;Przywracanie pakietu rozwiązań jest włączoneNA (potrzebujemy tego, aby uniknąć przechowywania pakietów na TFS).Czego potrzebuję:
Zautomatyzuj proces pakowania, aby spakować każdy csproj wraz ze wszystkimi odniesieniami i zależnościami do pliku .nuspec, więc wszystkie zostaną poprawnie załadowane podczas instalacji.Podobne pytania, na które patrzyłem:
Polecenie NuGet: pack NIE obejmuje zależności nuget
Pakiet Nuget zawiera tylko zależności dla niektórych projektów
Dlaczego nuget nie uwzględnia przywoływanego projektu podczas pakowania?