Udostępnij za pośrednictwem


Informacje o wersji narzędzia NuGet 2.8

Informacje o wersji | NuGet 2.7.2 NuGet 2.8.1

NuGet 2.8 został wydany 29 stycznia 2014 r.

Podziękowania

  1. [Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie) (@leppie)
    • [#3466](https://nuget.codeplex.com/workitem/3466) - Podczas pakowania pakietów sprawdź identyfikator pakietów zależności.
  2. [Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba) (@maartenballiauw)
    • [#2379](https://nuget.codeplex.com/workitem/2379) — Usuń sufiks $metadata podczas utrwalania poświadczeń kanału informacyjnego.
  3. [Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos) (@foxtricks)
    • [#3538](http://nuget.codeplex.com/workitem/3538) - Obsługa określania pliku projektu dla polecenia nuget.exe update.
  4. [Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
    • [#3536](http://nuget.codeplex.com/workitem/3536) - Tokeny zastępcze nie zostały przekazane z -IncludeReferencedProjects.
  5. [David Poole](https://www.codeplex.com/site/users/view/Sarkie) (@Sarkie_Dave)
    • [#3677](http://nuget.codeplex.com/workitem/3677) — Rozwiązaliśmy problem z elementem nuget.push, który zgłasza wyjątek OutOfMemoryException podczas wypychania dużego pakietu.
  6. [Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
    • [#3666](http://nuget.codeplex.com/workitem/3666) — Napraw nieprawidłową ścieżkę docelową, gdy projekt odwołuje się do innego projektu interfejsu wiersza polecenia/języka C++.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#3639](https://nuget.codeplex.com/workitem/3639) — Zezwalaj na instalowanie pakietów jako zależności programistyczne domyślnie
  8. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • [#3717](https://nuget.codeplex.com/workitem/3717) — Usuwanie niejawnych uaktualnień do najnowszej wersji poprawki
  9. [Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
    • Kilka poprawek usterek i ulepszeń narzędzia NuGet.Server, polecenia nuget.exe dublowania i innych.
    • Ta praca została wykonana w ciągu kilku miesięcy, a Gregory pracował z nami we właściwym czasie, aby zintegrować się z master na 2.8.

Rozwiązywanie poprawek dla zależności

W przypadku rozwiązywania zależności pakietów NuGet historycznie zaimplementowano strategię wybierania najniższej wersji głównej i pomocniczej pakietu, która spełnia zależności pakietu. W przeciwieństwie do wersji głównej i pomocniczej, jednak wersja poprawki zawsze była rozpoznawana jako najwyższa. Chociaż zachowanie było dobrze intencją, spowodowało to brak determinizmu instalowania pakietów z zależnościami. Rozważmy następujący przykład:

PackageA@1.0.0 -[ >=1.0.0 ]-> PackageB@1.0.0

Developer1 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.0

PackageB@1.0.1 is published

Developer2 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.1

W tym przykładzie, mimo że program Developer1 i Developer2 zainstalowano PackageA@1.0.0, każda z nich zawiera inną wersję pakietu PackageB. Program NuGet 2.8 zmienia to domyślne zachowanie, tak aby zachowanie rozwiązania zależności dla wersji poprawek było zgodne z zachowaniem wersji głównych i pomocniczych. W powyższym przykładzie PackageB@1.0.0 zostanie zainstalowany w wyniku zainstalowania PackageA@1.0.0, niezależnie od nowszej wersji poprawki.

-DependencyVersion Switch

Chociaż pakiet NuGet 2.8 zmienia domyślne zachowanie w celu rozpoznawania zależności, dodaje również bardziej precyzyjną kontrolę nad procesem rozwiązywania zależności za pośrednictwem przełącznika -DependencyVersion w konsoli menedżera pakietów. Przełącznik umożliwia rozpoznawanie zależności do najniższej możliwej wersji (zachowanie domyślne), najwyższej możliwej wersji lub najwyższej wersji pomocniczej lub poprawkowej. Ten przełącznik działa tylko w przypadku instalacji pakietu w poleceniu programu PowerShell.

DependencyVersion Switch

Atrybut DependencyVersion

Oprócz przełącznika -DependencyVersion opisanego powyżej nuGet zezwolił również na możliwość ustawienia nowego atrybutu w pliku Nuget.Config definiującym wartość domyślną, jeśli przełącznik -DependencyVersion nie został określony w wywołaniu install-package. Ta wartość będzie również uwzględniana przez okno dialogowe Menedżer pakietów NuGet dla wszystkich operacji pakietu instalacyjnego. Aby ustawić tę wartość, dodaj poniższy atrybut do pliku Nuget.Config:

<config>
    <add key="dependencyversion" value="Highest" />
</config>

Wyświetlanie podglądu operacji NuGet za pomocą polecenia -whatif

Niektóre pakiety NuGet mogą mieć głębokie grafy zależności, a w związku z tym mogą być przydatne podczas operacji instalacji, odinstalowywania lub aktualizacji, aby najpierw zobaczyć, co się stanie. NuGet 2.8 dodaje standardowy przełącznik PowerShell -whatif do poleceń install-package, uninstall-package i update-package, aby umożliwić wizualizację całego zamknięcia pakietów, do których zostanie zastosowane polecenie. Na przykład uruchomienie install-package Microsoft.AspNet.WebApi -whatif w pustej aplikacji internetowej ASP.NET daje następujące elementy.

PM> install-package Microsoft.AspNet.WebApi -whatif
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.WebHost (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (≥ 5.0.0)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 4.5.11)'.
Install Newtonsoft.Json 4.5.11
Install Microsoft.AspNet.WebApi.Client 5.0.0
Install Microsoft.AspNet.WebApi.Core 5.0.0
Install Microsoft.AspNet.WebApi.WebHost 5.0.0
Install Microsoft.AspNet.WebApi 5.0.0

Obniżanie poziomu pakietu

Nie rzadko zdarza się, aby zainstalować wersję wstępną pakietu w celu zbadania nowych funkcji, a następnie zdecydować się wycofać do ostatniej stabilnej wersji. Przed nuGet 2.8 był to wieloetapowy proces odinstalowywania pakietu wstępnego i jego zależności, a następnie instalowania wcześniejszej wersji. Jednak w przypadku pakietu NuGet 2.8 pakiet update-package wycofa całe zamknięcie pakietu (np. drzewo zależności pakietu) do poprzedniej wersji.

Zależności programistyczne

Wiele różnych typów możliwości można dostarczać jako pakiety NuGet — w tym narzędzia używane do optymalizacji procesu programowania. Te składniki, chociaż mogą one mieć kluczowe znaczenie w tworzeniu nowego pakietu, nie powinny być traktowane jako zależność nowego pakietu po jego późniejszej publikacji. NuGet 2.8 umożliwia pakietowi identyfikację się w .nuspec pliku jako element developmentDependency. Po zainstalowaniu te metadane zostaną również dodane do packages.config pliku projektu, do którego zainstalowano pakiet. Gdy ten packages.config plik zostanie później przeanalizowany pod kątem zależności NuGet w czasie nuget.exe pack, wykluczy te zależności oznaczone jako zależności programistyczne.

Pojedyncze pliki packages.config dla różnych platform

Podczas tworzenia aplikacji dla wielu platform docelowych często mają różne pliki projektu dla każdego z odpowiednich środowisk kompilacji. Często używane są również różne pakiety NuGet w różnych plikach projektu, ponieważ pakiety mają różne poziomy obsługi dla różnych platform. Pakiet NuGet 2.8 zapewnia ulepszoną obsługę tego scenariusza, tworząc różne pliki dla różnych packages.config plików projektu specyficznych dla platformy.

Multiple package.config files

Powrót do lokalnej pamięci podręcznej

Chociaż pakiety NuGet są zwykle używane z galerii zdalnej, takiej jak galeria NuGet przy użyciu połączenia sieciowego, istnieje wiele scenariuszy, w których klient nie jest połączony. Bez połączenia sieciowego klient NuGet nie mógł pomyślnie zainstalować pakietów — nawet wtedy, gdy te pakiety były już na komputerze klienta w lokalnej pamięci podręcznej NuGet. Pakiet NuGet 2.8 dodaje automatyczny powrót pamięci podręcznej do konsoli menedżera pakietów. Na przykład podczas odłączania karty sieciowej i instalowania zapytania jQuery konsola pokazuje następujące elementy:

PM> Install-Package jquery
The source at nuget.org [https://www.nuget.org/api/v2/] is unreachable. Falling back to NuGet Local Cache at C:\Users\me\AppData\Local\NuGet\Cache
Installing 'jQuery 2.0.3'.
Successfully installed 'jQuery 2.0.3'.
Adding 'jQuery 2.0.3' to WebApplication18.
Successfully added 'jQuery 2.0.3' to WebApplication18.

Funkcja rezerwowania pamięci podręcznej nie wymaga żadnych określonych argumentów poleceń. Ponadto rezerwowa pamięć podręczna działa obecnie tylko w konsoli menedżera pakietów — zachowanie nie działa obecnie w oknie dialogowym Menedżera pakietów.

Aktualizacje klienta NuGet WebMatrix

Wraz z nuGet 2.8 rozszerzenie NuGet dla programu WebMatrix zostało również zaktualizowane w celu uwzględnienia wielu głównych funkcji dostarczanych z pakietem NuGet 2.5. Nowe możliwości obejmują te, takie jak "Aktualizuj wszystkie", "Minimalna wersja NuGet" i umożliwiają zastępowanie plików zawartości.

Aby zaktualizować rozszerzenie Menedżer pakietów NuGet w programie WebMatrix 3:

  1. Otwórz program WebMatrix 3
  2. Kliknij ikonę Rozszerzenia na wstążce
  3. Wybierz kartę Aktualizacje
  4. Kliknij, aby zaktualizować Menedżer pakietów NuGet do wersji 2.5.0
  5. Zamknij i uruchom ponownie program WebMatrix 3

Jest to pierwsza wersja rozszerzenia nuGet Menedżer pakietów nuGet dla programu WebMatrix. Kod został niedawno dodany przez firmę Microsoft do projektu NuGet typu open source. Wcześniej integracja nuGet została wbudowana w program WebMatrix i nie można było jej zaktualizować poza pasmem z programu WebMatrix. Teraz mamy możliwość dalszego aktualizowania go wraz z pozostałymi narzędziami klienckimi NuGet.

Poprawki błędów

Jedną z głównych poprawek błędów była poprawa wydajności w poleceniu update-package -reinstall.

Oprócz tych funkcji i wyżej wymienionej poprawki wydajności, ta wersja NuGet zawiera również wiele innych poprawek błędów. W wydaniu rozwiązano łącznie 181 problemów. Aby uzyskać pełną listę elementów roboczych, które zostały naprawione w programie NuGet 2.8, wyświetl element [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all).