2015-03-20 16 views
5

Próbuję zrozumieć, czy istnieje jakikolwiek sposób polegania na automatycznym przywracaniu pakietów Nuget podczas odwoływania się do bibliotek hostowanych na Github. Problem polega na tym, że kiedy dodaję pewną bibliotekę jako moduł podrzędny, ma ona własny katalog/packages /. Ale kiedy dodaję csproj z tej biblioteki do mojego rozwiązania, ponieważ nie ma żadnych bibliotek DLL w/packages/katalogu tego modułu, kompilacja kończy się niepowodzeniem.Automatyczne przywracanie pakietów NuGet przy użyciu podmodułów git

Oczywiście, łatwa naprawa na moim komputerze to otwarcie pliku .sln z podmodułu, do którego się odwołałem, wykonanie kompilacji. Teraz, budowanie z mojego głównego rozwiązania będzie oczywiście działało, ponieważ/packages/folder w module modułu jest zapełniany. Ale to nie jest coś, co mogę zrobić na serwerze kompilacji.

Jakikolwiek sposób na rozwiązanie tego problemu bez całkowitego pomylenia modułu częściowego? Oczywiście nie chcę też zmieniać modułu podległego .csproj, ponieważ spowodowałoby to zsynchronizowanie go z pochodzeniem. Najlepiej byłoby, gdybym mógł polecić nugetowi pobranie pakietów dla odnośnego submodułu .csproj w swoim katalogu/packages /.

+0

Możliwy duplikat [przywracania pakietu Nuget z modułem git] (http://stackoverflow.com/questions/18609333/nuget-package-restore-with-git-submodule) – georgiosd

Odpowiedz

1

Istnieją dwa rodzaje automatycznego przywracania pakietów. Jeden, który jest uruchamiany podczas budowania rozwiązania w Visual Studio, i który jest oparty na MSBuild i wymaga modyfikacji projektu, aby uruchomić przywracanie NuGet.exe w ramach kompilacji. Przywracanie oparte na MSBuild jest włączane poprzez wybranie Enable NuGet Package Restore, ale zostało to wycofane przez zespół NuGet.

przypadku serwera kompilacji trzeba by zrobić albo:

  1. Run NuGet.exe restore dla wszystkich rozwiązań, zanim uruchomisz budować.
  2. Odtworzenie pakietów NuGet przez MSBuild jako główne rozwiązanie.

Aby przywrócić pakiety Nuget z MSBuild można użyć przywracania przestarzałe MSBuild pakiet Nuget oparty czy może lepiej jest utworzyć plik Before.YourSolution.sln.targets jak opisano w poście Ultimate Cross Platform NuGet Restore. Niestandardowy plik Przed .... powinien odzyskać pakiety dla modułu.

Jeśli korzystasz z przywracania opartego na MSBuild, jedną z korzyści jest to, że nie ma żadnego etapu wstępnej kompilacji, który ktoś musi uruchomić przed zbudowaniem rozwiązania, ponieważ budowanie rozwiązania wykonuje przywracanie. Jednym z problemów przywracania pakietu MSBuild, przynajmniej z włączonym przy włączaniu Włączania pakietu NuGet w Visual Studio, jest to, że może on powodować problemy z pakietami NuGet, które używają własnych niestandardowych plików .targets MSBuild.

Powiązane problemy