2014-09-30 18 views
6

Używam prywatnego serwera Nuget na serwerze IIS. Tworzę pakiety i przesyłam je wszystkie za pośrednictwem komendy za pomocą nuget.exe (Później muszę umieścić to na serwerze kompilacji, stąd linia poleceń). Jednak jest jeden problem, w którym utknąłem.Zależności Nuget nie są instalowane

Próbuję zadeklarować zależności. Generuję plik Nuspec w folderze, w którym znajduje się plik .csproj. Potem ręcznie edytować plik nuspec dodać to pod znacznikiem metadanych:

<metadata> 
    <dependencies> 
     <group targetFramework=".NETFramework4.5"> 
      <dependency id="DemoProject" version="2.0.0.0" /> 
     </group> 
    </dependencies> 
</metadata> 

DemoProject, wersja 2.0.0.0 jest obecny na Nuget Server. Projekt, do którego tworzę pakiet, MyProj.csproj nie ma odniesienia do DemoProject dodanego do niego przez Visual Studio. To właśnie w czasie pakowania chcę utworzyć zależność. Brzmi to dziwnie, ale jest potrzebne do wstępnej weryfikacji.

Potem uruchom polecenie Opakowanie:

"C: \ Nuget \ NuGet.exe" pakować MyProj.csproj -IncludeReferencedProjects prop Configuration = Release

Potem wciśnij go do serwera Nuget użyciu wiersza poleceń. Kiedy wykonuję instalację za pomocą wiersza poleceń, tylko pakiet MyProj jest obecny w miejscu instalacji.

Gdy korzystam z Eksploratora pakietów Nuget i tworzę pakiet, mogę użyć Edytora zależności pakietu, aby określić zależność. Prosi o adres URL mojego lokalnego serwera Nuget, a następnie dodaje zależność. A kiedy zainstaluję ten pakiet, działa !!

Wydaje się, że nie ma różnicy w wygenerowanym pliku nuspec w obu przypadkach. Oczywiście menedżer pakietów Nuget robi coś, czego mi brakuje.

Jakieś wskazówki?

Więcej szczegółów: Kiedy utworzę folder lib w konsoli zarządzania pakietami i ręcznie wstawię moją bibliotekę dll, lib-> net45-> MyProj.dll, wtedy po zainstalowaniu tak utworzonego pakietu również "nie" zainstaluję zależności . Znowu wracam do czytania dokumentacji.

Odpowiedz

0

Wiem, że to nie odpowiada bezpośrednio na twoje pytanie, ale miałem problem z zależnościami NuGet i moje rozwiązanie może dostarczyć podpowiedzi.

DLL # 1 nie posiadał zależności od NuGeta. Zepchnął to na moje prywatne repozytorium. DLL # 2 odwołuje się do pakietu DLL # 1 NuGet. Zepchnął to na moje prywatne repozytorium.

Wszystko w porządku i dandy, z wyjątkiem projektu aplikacji, kiedy idę do "Zarządzaj pakietami NuGet ...", pakiet NuGet dla DLL # 2 jest wymieniony na karcie Przeglądaj, ale nie wykazuje zależności. Zostałem zmuszony do zainstalowania pakietów Nuget DLL # 1 i DLL # 2. Chciałem zainstalować pakiet nuget DLL # 2 i automatycznie uzyskać DLL # 1.

Sposób, w jaki to naprawiłem, to odinstalowanie wszystkich pakietów NuGet z rozwiązania DLL # 2. Następnie przejdź do Narzędzia> Opcje> NuGet Package Manager> Ogólne. Następnie ustaw domyślny format zarządzania pakietami na Packages.config, a następnie odznacz opcję "Zezwalaj na wybór formatu podczas pierwszej instalacji pakietu".

Następnie zainstalowałem wszystkie potrzebne pakiety NuGet. Teraz, gdy go pakuję i wypycham na serwer, pokazuje właściwe zależności podczas przechodzenia do "Zarządzaj pakietami NuGet ...".

Nuget paczka nie widzi zależności ponieważ jej szuka ich w folderze \ pakietów. Ten folder nie istnieje, ponieważ korzystałem z PackageReference do zarządzania pakietami.

Wszystko działało po przełączeniu na Packages.config w celu zarządzania pakietami.

Wiem, że problem nie był taki sam jak twój, ale jeśli nie używasz Packages.config do zarządzania pakietami, być może jest to związane.

0

Późna odpowiedź, ale problem z tą nuspec to <group targetFramework=".NETFramework4.5">. Jestem przekonany, że ".NETFramework4.5" jest nieprawidłową strukturą targetFramework. Pełna lista dostępnych Target Frameworks is here.

Podczas pracy z Dependency section nie trzeba używać znacznika grupy. Dowolny użytkownik, który napotka podobne błędy, dobrze by przeczytał tę sekcję. Mają próbki właściwego użycia.