Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Informacje o wersji narzędzia NuGet 6.0

Pojazdy dystrybucyjne NuGet:

Wersja narzędzia NuGet Dostępna w wersji programu Visual Studio Dostępne w zestawach .NET SDK
6.0.0 Visual Studio 2022 w wersji 17.0.0 6.0.01
6.0.1 Visual Studio 2022 w wersji 17.0.2 Nie dotyczy
6.0.2 Visual Studio 2022 w wersji 17.0.11 6.0.3011
6.0.3 Visual Studio 2022 w wersji 17.0 6.0.1101
6.0.5 Nie dotyczy 6.0.1181
6.0.6 Nie dotyczy 6.0.1271

1 Zainstalowane z obciążeniem programu Visual Studio 2022 with.NET Core

Podsumowanie: Co nowego w wersji 6.0.6

  • [Zabezpieczenia]: Biuletyn zabezpieczeń firmy Microsoft CVE-2024-0057 | Luka w zabezpieczeniach dotycząca obejścia funkcji zabezpieczeń klienta NuGet — #12653

Podsumowanie: Co nowego w wersji 6.0.5

  • [Zabezpieczenia]: Biuletyn zabezpieczeń firmy Microsoft CVE-2023-29337 | Luka w zabezpieczeniach dotycząca zdalnego wykonywania kodu klienta NuGet — #12653

Uwaga

Istnieje zmiana powodująca niezgodność zachowania w systemie Linux. Lokalizacja folderu tymczasowego, w której nuGet przechowuje pliki tymczasowe podczas różnych operacji, zmieniła się z /tmp/NuGetScratch na /tmp/NuGetScratch<username>. Na przykład w przypadku użytkownika User1 folder tymczasowy będzie mieć wartość /tmp/NuGetScratchUser1.

Podsumowanie: Co nowego w wersji 6.0.3

  • [Zabezpieczenia]: Biuletyn zabezpieczeń firmy Microsoft CVE-2022-41032 | Luka w zabezpieczeniach dotycząca podniesienia uprawnień na platformie .NET — #12149

Uwaga

Programy Visual Studio 17.0, MSBuild 17.0 i .NET 6.0 wymagają NuGet.exe 6.0 lub nowszej.

Podsumowanie: Co nowego w wersji 6.0.2

  • [Zabezpieczenia]: Biuletyn zabezpieczeń firmy Microsoft CVE 2022-30184 | Luka w zabezpieczeniach dotycząca ujawniania informacji na platformie .NET — #11883

Podsumowanie: Co nowego w wersji 6.0.0

🎉 Jest to pierwsza wersja, która oferuje pełną obsługę tworzenia i przywracania pakietów NuGet przeznaczonych dla platformy .NET 6.0 🎉

Obsługa platformy .NET 6

NuGet 6.0 to pierwsza wersja, która oferuje pełną obsługę tworzenia i przywracania pakietów NuGet przeznaczonych dla platformy .NET 6.0. Teraz można kierować do następujących platform docelowych:

  • net6.0
  • net6.0-windows
  • net6.0-android
  • net6.0-ios
  • net6.0-macos
  • net6.0-maccatalyst
  • net6.0-tvos
  • net6.0-tizen

.NET 6

Jeśli nie znasz obecnie obiektów docelowych platformy .NET 6.0 lub tego, jak będzie ona wyglądać w przyszłości, nie zapomnij zapoznać się ze specyfikacją TFM platformy .NET 6.0.

Mapowanie źródła

Na początku tego roku wielu menedżerów pakietów dowiedziało się o atakach polegających na nieporozumieniu zależności, w których użytkownik zostanie oszukany do zainstalowania złośliwej zależności zamiast tej, do której zamierzali. Aby wzmocnić łańcuch dostaw oprogramowania przed tymi atakami, zespół NuGet opracował nową funkcję, która pozwala mapować zależności na określone źródła. Poniżej przedstawiono przykład sposobu używania mapowania źródła do ochrony projektów.

<!-- Define a global packages folder for your repository. -->
<!-- This is where installed packages will be stored locally. -->
<config>
  <add key="globalPackagesFolder" value="globalPackagesFolder" />
</config>

<!-- Define my package sources, nuget.org and contoso.com. -->
<!-- `clear` ensures no additional sources are inherited from another config file. -->
<packageSources>
  <clear />
  <!-- `key` can be any identifier for your source. -->
  <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  <add key="contoso.com" value="https://contoso.com/packages/" />
</packageSources>

<!-- Define mappings by adding package ID patterns beneath the target source. -->
<!-- Contoso.* packages will be restored from contoso.com, everything else from nuget.org. -->
<packageSourceMapping>
  <!-- key value for <packageSource> should match key values from <packageSources> element -->
  <packageSource key="nuget.org">
    <package pattern="*" />
  </packageSource>
  <packageSource key="contoso.com">
    <package pattern="Contoso.*" />
  </packageSource>
</packageSourceMapping>

Więcej informacji na temat mapowania źródeł można przeczytać na naszym blogu wydanym na początku tego roku.

Luki w zabezpieczeniach pakietów w programie Visual Studio

W przypadku korzystania z Menedżer pakietów NuGet w programie Visual Studio zobaczysz teraz luki w zabezpieczeniach pakietów, w tym szczegóły, takie jak liczba i ważność luk w zabezpieczeniach, a także linki bezpośrednie, aby dowiedzieć się więcej o poradach.

Visual Studio Package Vulnerabilities

Zachowanie ponawiania i wycofywania

Istnieje teraz flaga NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY w celu poprawy zachowania ponawiania i wycofywania klientów NuGet, takich jak zwiększenie maksymalnej ilości ponownych prób i zwiększenie opóźnienia dla bardziej odpornego środowiska podczas napotkania słabszego połączenia internetowego.

Wykluczanie domyślnych rozszerzeń plików

Teraz możesz użyć flagi <AllowedOutputExtensionsInPackageBuildOutputFolder> MSBuild, aby edytować rozszerzenia plików zawarte w danych wyjściowych kompilacji pakietu. Zapewnia to większą kontrolę nad rozszerzeniami zawartymi w folderze danych wyjściowych kompilacji.

Ulepszone informacje o wycofaniu w programie Visual Studio

Przestarzałe pakiety w programie Visual Studio zawierają teraz link do sugerowanego pakietu alternatywnego do użycia. Za pomocą tej funkcji można szybko przeglądać i instalować pakiety, które są aktywnie obsługiwane.

Visual Studio Package Deprecations

Dodawanie pliku README pakietu w programie Visual Studio

Teraz możesz dodać plik README.md pakietu bezpośrednio w programie Visual Studio. Plik README ułatwia przekazywanie ważnych informacji o pakiecie. Często jest to pierwszy element, który użytkownik zobaczy podczas odwiedzania pakietu w NuGet.org. Pliki README zwykle zawierają informacje na temat:

  • Co robi pakiet
  • Dlaczego pakiet jest przydatny
  • Jak użytkownicy mogą rozpocząć pracę z pakietem
  • Gdzie użytkownicy mogą uzyskać pomoc lub współtworzyć pakiet

Więcej informacji na temat dodawania pliku README do pakietu NuGet można przeczytać na naszym blogu.

Szybsze ładowanie rozwiązań i przełączanie gałęzi w programie Visual Studio

W programie Visual Studio 2022 pakiet NuGet ponownie zdefiniował kontrakt między przywracaniem pakietów NuGet i typowymi składnikami programu Visual Studio w celu zwiększenia wydajności dużych rozwiązań przez wywołanie przywracania tylko raz, a nie wiele razy. Poprawia to czas potrzebny na znaczne ukończenie procesów w tle.

Zainstaluj program Visual Studio 2022 (wersja zapoznawcza) i daj nam znać, jeśli zauważysz szybsze środowisko ładowania dużych rozwiązań lub przełączania się między gałęziami!

Interfejsy API programu Visual Studio rozwiązania NuGetRestoreManager przeniesione do pakietu NuGet.VisualStudio

Narzędzie NuGet.SolutionRestoreManager.Interop nie zostało już zaktualizowane, a jego interfejsy API zostały scalone z pakietem NuGet.VisualStudio. Jeśli aktualizujesz istniejące rozszerzenie programu Visual Studio do pracy z programem Visual Studio 2022 (17.0), a wcześniej używano narzędzia NuGet.SolutionRestoreManager.Interop, należy odinstalować ten pakiet i uaktualnić/zainstalować program NuGet.VisualStudio do wersji 6.0.0. Przestrzenie nazw i klasy pozostają takie same, więc są zgodne z perspektywy interfejsu API.

Ponadto po zmianie zasad programu Visual Studio program NuGet.VisualStudio nie używa już programu EmbedInteropTypes. W związku z tym rozszerzenie będzie mieć odwołanie czasu kompilacji do NuGet.VisualStudio.dll. Nuget instruuje program Visual Studio, aby używał przekierowań powiązań, więc rozszerzenie nie będzie miało wpływu na aktualizacje NuGet do nowszych wersji, a rozszerzenie jest kompilowane względem starszej wersji naszego zestawu. Z tego powodu można pominąć zestawy NuGet z vsix, aby zmniejszyć rozmiar pobierania. Pakiety NuGet zostaną zaktualizowane w celu automatycznego wykonania tej czynności w programie NuGet 6.2 (dla programu Visual Studio 17.2).

Aby pominąć zestawy NuGet z vsix, dodaj następujące elementy do pliku projektu:

<ItemGroup>
  <SuppressFromVsix Include="NuGet.VisualStudio.dll" Visible="false" />
  <SuppressFromVsix Include="NuGet.VisualStudio.Contracts.dll" Visible="false" />
</ItemGroup>

Funkcje:

  • Dodaj punkt zaczepienia do wykluczania niektórych rozszerzeń danych wyjściowych kompilacji z pakietu NuGet — #10690

  • Implementowanie nowego pierwszeństwa dla serwerów TFM platformy xamarin w przypadku korzystania z programu net6.0+ — #10717

  • Zaimplementuj ostrzeżenie maccatalyst, gdy "powrót" do platformy xamarin.ios dla projektów net6.0+ — #10718

  • Dodawanie obsługi przestrzeni nazw pakietów w ramach konfiguracji — dodawanie tylko możliwości odczytu — #10725

  • Przestrzenie nazw pakietów: Konto dla przestrzeni nazw pakietów filtrowania w pakiecie pobierania w funkcji przywracania packageReference — #10732

  • Dodano obsługę filtrowania przestrzeni nazw w funkcji packages.config w nuget.exe i msbuild /t:restore — #10737

  • Dodaj kontrakt służący do identyfikowania źródła przywracania, aby ułatwić nuget lepsze przywracanie wsadowe/przełączniki gałęzi. - #10807

  • Dodano obsługę net6.0-tizen i net6.0-android — #10819

  • Dodawanie obsługi filtrowania przestrzeni nazw dla przywracania packages.config w programie Visual Studio — #10823

  • Dodano obsługę pliku TfmSpecificDebugSymbolsFile w celu zapewnienia symboli w kompilacji wewnętrznej — #10913

  • Pokaż ikonę ostrzeżenia na karcie Zainstalowane, jeśli są zainstalowane pakiety podatne na zagrożenia — #10982

  • Pokaż ikonę ostrzeżenia według pakietu na liście pakietów, jeśli istnieje luka w zabezpieczeniach — #10983

  • Pokaż szczegóły luki w zabezpieczeniach pakietu w okienku szczegółów pakietu PMUI — #10985

  • Dodawanie linków do wycofywania na stronie Szczegółów w interfejsie użytkownika PM — #10996

  • [Funkcja]: Konfigurowanie zachowania liczby ponownych prób i wycofywania dla klientów Nuget — #11027

  • [Funkcja]: Rozwiąż wszystkie reguły instalacji pakietów dla przestrzeni nazw pakietów działają w scenariuszach PackageReference i PackageDownload. - #11035

  • [Funkcja]: Adres wszystkich reguł instalacji pakietów dla przestrzeni nazw pakietów działa w projektach stylów konfiguracji pakietów — #11036

Problemy rozwiązane w tej wersji

Kontrolery domeny:

  • Rozważ usunięcie rozszerzalności, która pozwala innym menedżerom pakietów być wyświetlana jako zgodna — #6623

  • Przestań używać funkcji EmbedInteropTypes dla pakietów/zestawów vs extenbility programu NuGet — #10892

  • Obiekty targets Project.nuget.g.nie powinny poprzedzać biblioteki MSBuildAllProjects w programie MSBuild 16 lub nowszym — #10895

  • Usuwanie przestarzałych podstawowych interfejsów API — #10940

  • Scal nuGet.SolutionRestoreManager.Interop z aplikacją NuGet.VisualStudio — #10957

  • Usuń runtimeEnvironmentHelper.IsDev14 — #11000

  • Aktualizowanie pliku Newtonsoft.Json do wersji 13.0.1 — #11095

  • [DCR]: Zmiana nazwy funkcji packageNamespaces na packageSourceMapping — #11205

Błędów:

  • Instalowanie przy użyciu trybu zapisywania pakietu "nuspec" zawsze instaluje ponownie — #2402

  • Update-Package -reinstall -ProjectName <project> nie działa w przypadku żądania ściągnięcia — #6088

  • "Element o tym samym kluczu został już dodany" — gdy graf projektu ma wartość projectName == packageRef name (o tej samej wersji) — #6795

  • [Niepowodzenie testu] Sugerowanie usunięcia drugiego zduplikowanego ciągu "Akceptacja licencji" w oknie dialogowym "Akceptacja licencji" — #8162

  • Nie można usunąć klucza konfiguracji przy użyciu nuget.exe — #8223

  • msbuild /t:Restore i Visual Studio tworzą różne pliki zasobów, gdy nazwa zestawu != nazwa projektu - #8272

  • Interfejs użytkownika PM nie humanizuje liczby pobierania, gdy 999 500 <= count <=999,999 - #8800

  • Sugestia narzędzia Roslyn Analyzer "instalacja z menedżerem pakietów" otwiera kartę NuGet — #10124

  • Funkcja StaticGraph Restore powinna wyraźnie wywoływać, gdy projekt nie KnownToBeMSBuildFormat jest wywoływany za pośrednictwem pliku rozwiązania — #10363

  • Polecenie "nuget spec" generuje plik nuspec z ikonąUrl — #10400

  • Rfc3161TimestampTokenInfo.GetNonce może zgłosić — #10484

  • Sprawdź, czy polecenie nie jest wyłączone w środowisku Mono — #10585

  • Metoda CreateLockFileTargetLibrary spowalnia operację przywracania — #10614

  • PackageArchieveReader nie zastępuje funkcji CopyNupkgAsync, dlatego wyodrębnianie pakietów kończy się niepowodzeniem — #10708

  • Propagacja informacji o przestrzeniach nazw pakietu do polecenia przywracania — #10736

  • Upewnij się, że filtrowanie przestrzeni nazw jest przestrzegane w pliku packages.config package installation/updates in PMUI - #10738

  • NuGet.Packaging.Extraction: wyjątki z nie odnalezionych zasobów — #10776

  • Nie można użyć osadzonego pliku PackageReadmeFile w przypadku używania snupkg dla symboli — #10791

  • Usuwanie nadmiarowych przełączników opóźnienia interfejsu użytkownika w inicjowaniu projektu NuGet — #10824

  • Usuwanie niepotrzebnych wyliczeń ToList w ścieżkach kodu przywracania — #10835

  • Oznacz IVsPackageInstallerServices jako przestarzałe — #10836

  • Pakiety NuGet pobrane ponad 1 miliard razy pokazują nieprawidłową jednostkę — #10864

  • Trudno zobaczyć kolor tła liczby po prawej stronie kart "Aktualizacje" i "Konsoliduj" w motywie ciemnym — #10896

  • Ulepszenia IVsProjectRestoreInfoSource — #10898

  • packages.lock.json przerwane w projekcie języka C# w stylu zestawu SDK przeznaczonym dla net5.0-windows — #10901

  • Dodawanie domyślnej implementacji dla interfejsu IVsSolutionRestoreService4 — #10908

  • [Czas odpowiedzi] Usuwanie niejawnego wywołania RPC z wątku w tle za pośrednictwem niepotrzebnych rozszerzeń GetServiceAsync — #10916

  • Boxing wartości logicznej polega na obliczaniu kodu skrótu powoduje nadmierne alokacje — #10917

  • Iterowanie zależności biblioteki powoduje nadmierną alokację modułów wyliczających — #10918

  • Wyszukiwanie pamięci podręcznej zgodności przydziela func dla każdego wyszukiwania — #10919

  • Nadmierna alokacja obiektu WhereListIterator w pliku DependencyWalker.CreateGraphNode — #10920

  • Wyjątek podczas przywracania: "Przywracanie metadanych wprowadza błąd listy wymaganych platform docelowych" — #10924

  • Udostępnianie reduktora struktury w konwencji kodu zarządzanego — #10925

  • Plik VSIX narzędzia NuGet jest generowany z nieprawidłowymi przekierowaniami powiązań — #10946

  • Opóźnienia interfejsu użytkownika Menedżer pakietów NuGet podczas uruchamiania skryptów inicjowania — #10947

  • Identyfikator sourceUri pomocy technicznej przekazany w elemencie nuget restore/install i dotnet restore package lub innych równoważnych poleceniach — #10948

  • Obsługa filtrowania przestrzeni nazw dla polecenia instalacji nuget.exe — #10961

  • Zatrzymaj generowanie właściwości pierwotnych dla każdego segmentu — #10969

  • Nieoczekiwane odwołanie NU1605 z odwołania przechodniego, które nigdy nie zostało wybrane (podgraf przycinany) — #10972

  • NuGet.Localization nie ma ikony pakietu — #10975

  • Unikaj niepotrzebnego zmieniania rozmiaru słownika podczas obliczania zamknięcia projektu — #10976

  • Dokumentacja powodująca konflikt w Ustawienia. AddOrUpdate — #10980

  • Używanie tablicy bajtów w puli podczas kopiowania plików i weryfikowania podpisów — #10988

  • Unikaj alokacji Task.WhenAny w przewodniku zależności — #10989

  • Upewnij się, że filtrowanie przestrzeni nazw jest przestrzegane w instalacji pakietu packages.config/updates PMC — #11001

  • Upewnij się, że filtrowanie przestrzeni nazw jest przestrzegane w interfejsie API instalatora pakietów packages.config/updates — #11002

  • [Usterka]: Interfejs użytkownika pm pokazuje 0 liczbę pobierania, gdy wybrany pakiet jest już zainstalowany — #11012

  • Zmniejszanie alokacji w module VersionFormatter — #11014

  • Przestarzałe nieużywane typy: LibraryDependencyType i powiązane — #11015

  • [Usterka]: nuget.exe install packages.config nie honoruje -PackageSaveMode nuspec - #11018

  • [Usterka]: $(IsPackable) nie jest cytowana — #11025

  • Tworzenie testów wierzchołka przy użyciu repozytoriów wieloźródłowych na potrzeby filtrowania przestrzeni nazw pakietów PMUI — #11026

  • [Usterka]: [Ułatwienia dostępu] Trudne do odczytania linki w wynikach wyszukiwania interfejsu użytkownika pm przy użyciu jasnego lub ciemnego motywu — #11055

  • IVsSolutionRestoreService4 powinien rozszerzyć IVsSolutionRestoreService3 — #11098

  • [Usterka]: Linki doradcze powinny być wyrównane w okienku szczegółów PMUI — #11101

  • Etykietka narzędzia ikony ostrzeżenia zainstalowanej wersji pakietu podatnego na zagrożenia/wycofywania nie jest jasna — #11103

  • [Czas odpowiedzi] RestoreOperationLogger+StatusBarProgress.Dispose blokuje wątek puli wątków oczekujący na wątek interfejsu użytkownika — #11115

  • Dodawanie czasu od metryki ostatniego przywracania — #11124

  • [Usterka]: regresja nuget.exe obsługi cyklicznych <files> wpisów z zakresu od 5.9.1 do 5.10.0 — #11125

  • Await WhenNominated, gdy projekt ma oczekującą nominację — #11132

  • Opcja sourceUri obsługi przekazana w pakiecie dotnet add — #11140

  • [Usterka]: interfejs użytkownika programu VS PM nie wyświetla ikon JPEG dla pakietów — #11144

  • UIDelay: nuget.packagemanagement.visualstudio.dll!NuGet.PackageManagement.VisualStudio.VsCoreProjectSystemReferenceReader+<GetProjectReferencesAsync>d__ — projekty CPS — #11162

  • [Usterka]: dotnet list package --outdated --interactive powoduje, że dostawca poświadczeń unieważnia pamięć podręczną dla każdego pakietu na liście — #11169

  • [Usterka]: Przestrzenie nazw pakietów dla scenariuszy packages.config używają wszystkich źródeł jako opcji rezerwowej, gdy nie znaleziono pasujących przestrzeni nazw dla pakietu — #11170

  • Unikaj wyszukiwania MEF w wątku interfejsu użytkownika podczas inicjowania projektów NuGet — #11176

  • [Usterka]: Etykietka narzędzia na obrazie wskaźnika ostrzeżenia na karcie Zainstalowane nie działa już — #11183

  • Wszystkie wywołania klasy ServiceLocator pobierające usługi MEF powinny unikać wątku interfejsu użytkownika. - #11201

  • [Usterka]: brak zdarzenia telemetrii w programie Visual Studio — #11206

  • Unikaj zduplikowanych wywołań EnvDTEProjectUtility.IsSupportedAsync — #11207

  • Dodaj element IVsSolutionManager.GetSolutionDirectoryAsync — zwiększ wydajność i zatrzymaj blokowanie wywołującego wątku w asynchronicznych ścieżkach kodu. - #11208

  • Zmień nazwy typów/zmiennych w kodzie produktu/testu, aby odzwierciedlić nową nazwę funkcji przestrzeni nazw pakietów — #11216

  • [Usterka]: kompilacja ArPow nie działa dobrze, gdy w podkatalogu niepowiązanego repozytorium Git — #11227

  • dotnet list package --vulnerable, --przestarzałe, --nieaktualne nie działa w przypadku przechodnich tylko dodatnich — #10767

Lista wszystkich problemów rozwiązanych w tej wersji — 6.0

Lista zatwierdzeń w tej wersji — 6.0.0

Podsumowanie: Co nowego w wersji 6.0.1

Tylko program Visual Studio został zaktualizowany przy użyciu tej wersji pakietu NuGet.

Problemy rozwiązane w tej wersji

  • [Usterka]: Nie można pobrać interfejsu INuGetProjectService z brokera usług w programie Visual Studio 17 — #11367
  • [Usterka]: inicjowanie konsoli Menedżer pakietów może spowodować zakleszczenia — #11320

Lista zatwierdzeń w tej wersji — 6.0.1

Współtworzenie społeczności

Dziękujemy wszystkim współautorom, którzy pomogli w tym wydaniu NuGet niesamowite!

Kto Prs Problemy
omajid 3866 Obsługa wartości innej niż null w dokumencie Rfc3161TimestampTokenInfo — #10484
marcin-krystianc 3934 Dodawanie pamięci podręcznej dla elementu LockFileTargetLibrary — #10614
krafs 4151 Usunięto wartość zwracaną z dokumentacji w pliku I Ustawienia. AddOrUpdate — #10980
huangqinjin 4148 Naprawa polecenia PackageSaveMode nuspec zawsze jest ponownie instalowana — #2402
Bezsenność 47 4190 fix(docs): Usuwanie linku do linku zamkniętego/martwego w wytycznych dotyczących współtworzenia — #8987
marcin-krystianc 4194 Utwórz konto skryptów wydajności dla niepowodzeń operacji przywracania — #9968
eriawan 4159 Poprawki otoki ($IsPackable) z pojedynczymi cudzysłowami — #11025
huangqinjin 4193 Instalacja pliku packages.config powinna honorować element PackageSaveMode — #11018
mfkl 4199 test: użyj nowego pliku DependencyGraphSpec — #11168
omajid 4254 Użyj --work-tree z zastosowaniem narzędzia git — #11227

Opinie — zapraszamy

Twoja opinia jest dla nas ważna. Jeśli występują problemy z tą wersją, zapoznaj się z naszymi problemami z usługą GitHub i społecznością deweloperów programu Visual Studio, aby zapoznać się z istniejącymi problemami. W przypadku nowych problemów w programie NuGet zgłoś problem z usługą GitHub. W przypadku ogólnych problemów z narzędziem NuGet poinformuj nas za pośrednictwem opcji Zgłoś problem znalezioną w ulubionym środowisku IDE w obszarze Pomoc > Zgłoś problem.