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
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.
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.
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 — #10363Polecenie "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 — #11025Tworzenie 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 — #11125Await 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.