Note sulla versione di NuGet 6.0

Veicoli per la distribuzione di NuGet:

Versione di NuGet Disponibile nella versione di Visual Studio Disponibile in .NET SDK
6.0.0 Visual Studio 2022 versione 17.0.0 6.0.01
6.0.1 Visual Studio 2022 versione 17.0.2 N/D
6.0.2 Visual Studio 2022 versione 17.0.11 6.0.3011
6.0.3 Visual Studio 2022 versione 17.0 6.0.1101
6.0.5 N/D 6.0.1181
6.0.6 N/D 6.0.1271

1 Installato con visual Studio 2022 with.NET carico di lavoro Core

Riepilogo: Novità nella versione 6.0.6

  • [Sicurezza]: Avviso di sicurezza Microsoft CVE-2024-0057 | Vulnerabilità di bypass della funzionalità di sicurezza client NuGet - #12653

Riepilogo: Novità nella versione 6.0.5

  • [Sicurezza]: Avviso di sicurezza Microsoft CVE-2023-29337 | Vulnerabilità di esecuzione del codice remoto del client NuGet - #12653

Nota

In Linux è presente una modifica che causa un'interruzione del comportamento. Il percorso della cartella temporanea, in cui NuGet archivia i file temporanei durante le varie operazioni, è passato da /tmp/NuGetScratch a /tmp/NuGetScratch<username>. Ad esempio, per l'utente User1, la cartella temporanea sarà /tmp/NuGetScratchUser1.

Riepilogo: Novità nella versione 6.0.3

  • [Sicurezza]: Avviso di sicurezza Microsoft CVE-2022-41032 | Vulnerabilità di elevazione dei privilegi .NET - #12149

Nota

Visual Studio 17.0, MSBuild 17.0 e .NET 6.0 richiedono NuGet.exe 6.0 o versione successiva.

Riepilogo: Novità nella versione 6.0.2

  • [Sicurezza]: Avviso di sicurezza Microsoft CVE 2022-30184 | Vulnerabilità di divulgazione di informazioni .NET - #11883

Riepilogo: Novità nella versione 6.0.0

🎉 Questa è la prima versione per offrire la creazione completa e il ripristino del supporto per i pacchetti NuGet destinati a .NET 6.0 🎉

Supporto di .NET 6

NuGet 6.0 è la prima versione per offrire la creazione completa e il ripristino del supporto per i pacchetti NuGet destinati a .NET 6.0. È ora possibile specificare come destinazione i framework di destinazione seguenti:

  • 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

Se non si ha familiarità con le destinazioni .NET 6.0 di oggi o che aspetto avrà in futuro, non dimenticare di consultare la specifica TFM di .NET 6.0.

Mapping origine

All'inizio di quest'anno, molti gestori di pacchetti sono diventati consapevoli degli attacchi di confusione delle dipendenze in cui un utente deve essere ingannato nell'installare una dipendenza dannosa anziché quella che intendeva. Per rafforzare la supply chain del software contro questi attacchi, il team NuGet ha sviluppato una nuova funzionalità che consente di eseguire il mapping delle dipendenze a origini specifiche. Di seguito è riportato un esempio di come usare il mapping di origine per proteggere i progetti.

<!-- 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>

Per altre informazioni sul mapping di origine, vedere il blog rilasciato all'inizio di quest'anno.

Vulnerabilità del pacchetto in Visual Studio

Quando si usa il Gestione pacchetti NuGet in Visual Studio, verranno ora visualizzate vulnerabilità del pacchetto per i pacchetti, inclusi dettagli come il numero e la gravità delle vulnerabilità, nonché collegamenti diretti per altre informazioni sugli avvisi.

Visual Studio Package Vulnerabilities

Comportamento di ripetizione e backoff

È ora disponibile un NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY flag per migliorare il comportamento di ripetizione e backoff dei client NuGet, ad esempio l'aumento della quantità massima di tentativi e l'aumento del ritardo per un'esperienza più resiliente quando si verifica una connessione Internet più debole.

Escludere le estensioni di file predefinite

È ora possibile usare il flag <AllowedOutputExtensionsInPackageBuildOutputFolder> MSBuild per modificare le estensioni di file incluse nell'output di compilazione del pacchetto. In questo modo è possibile controllare maggiormente le estensioni incluse nella cartella di output di compilazione.

Informazioni di deprecazione migliorate in Visual Studio

I pacchetti deprecati in Visual Studio ora includono un collegamento al pacchetto alternativo suggerito da usare. È possibile usare questa funzionalità per esplorare e installare rapidamente i pacchetti gestiti attivamente.

Visual Studio Package Deprecations

Aggiungere un file LEGGIMI pacchetto in Visual Studio

È ora possibile aggiungere un file di README.md pacchetto direttamente in Visual Studio. Un file README consente di comunicare informazioni importanti sul pacchetto. È spesso il primo elemento che un visitatore vedrà quando visita il pacchetto in NuGet.org. I file README in genere includono informazioni su:

  • Operazioni del pacchetto
  • Perché il pacchetto è utile
  • Come gli utenti possono iniziare a usare il pacchetto
  • Dove gli utenti possono ottenere assistenza o contribuire al pacchetto

Per altre informazioni sull'aggiunta di un file README al pacchetto NuGet, vedere il blog.

Caricamento e cambio di ramo più veloci della soluzione in Visual Studio

In Visual Studio 2022 NuGet ha ridefinito il contratto tra il ripristino dei pacchetti NuGet e i componenti comuni di Visual Studio per migliorare le prestazioni per soluzioni di grandi dimensioni chiamando il ripristino una sola volta anziché più volte. Questo migliora il tempo necessario per il completamento significativo dei processi in background.

Installare Visual Studio 2022 Preview e segnalare se si nota un'esperienza più veloce durante il caricamento di soluzioni di grandi dimensioni o il passaggio da un ramo all'altro.

Le API di Visual Studio SolutionRestoreManager di NuGet sono state spostate nel pacchetto NuGet.VisualStudio

NuGet.SolutionRestoreManager.Interop non viene più aggiornato e le RELATIVE API sono state unite nel pacchetto NuGet.VisualStudio. Se si aggiorna un'estensione di Visual Studio esistente per funzionare con Visual Studio 2022 (17.0) e si usava in precedenza NuGet.SolutionRestoreManager.Interop, è necessario disinstallare il pacchetto e aggiornare/installare NuGet.VisualStudio alla versione 6.0.0. Gli spazi dei nomi e le classi rimangono invariati, quindi è compatibile dal punto di vista dell'API.

Inoltre, dopo la modifica dei criteri di Visual Studio, NuGet.VisualStudio non usa EmbedInteropTypespiù . Di conseguenza, l'estensione avrà un riferimento in fase di compilazione per NuGet.VisualStudio.dll. Nuget indica a Visual Studio di usare i reindirizzamenti di binding, quindi l'estensione non verrà interessata quando NuGet viene aggiornato alle versioni più recenti e l'estensione viene compilata in base a una versione precedente dell'assembly. Per questo motivo, è possibile eliminare gli assembly di NuGet dal vsix per ridurre le dimensioni del download. I pacchetti NuGet verranno aggiornati per eseguire questa operazione automaticamente in NuGet 6.2 (per Visual Studio 17.2).

Per eliminare gli assembly di NuGet dal vsix, aggiungere quanto segue al file di progetto:

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

Funzionalità:

  • Aggiungere hook per escludere determinate estensioni di output di compilazione dal pacchetto nuget - #10690

  • Implementare la nuova precedenza per i TFM xamarin quando si usa net6.0+ - #10717

  • Implementare l'avviso maccatalyst quando si esegue il "fallback" a xamarin.ios per progetti net6.0+ - #10718

  • Aggiungere il supporto degli spazi dei nomi dei pacchetti come parte della configurazione: aggiungere solo una funzionalità di lettura - #10725

  • Spazi dei nomi dei pacchetti: account per i filtri degli spazi dei nomi dei pacchetti nel download del pacchetto in PackageReference restore - #10732

  • Aggiunta del supporto dei filtri degli spazi dei nomi nel ripristino packages.config in nuget.exe e msbuild /t:restore - #10737

  • Aggiungere un contratto per l'identificazione di un'origine di ripristino per consentire a NuGet di migliorare le opzioni di ripristino batch/ramo. - #10807

  • Aggiunta del supporto per net6.0-tizen e net6.0-android - #10819

  • Aggiunta del supporto del filtro degli spazi dei nomi per il ripristino packages.config in Visual Studio - #10823

  • Aggiungere il supporto per TfmSpecificDebugSymbolsFile per fornire simboli nella build interna - #10913

  • Mostra l'icona di avviso nella scheda Installato se sono installati pacchetti vulnerabili - #10982

  • Mostra l'icona di avviso per pacchetto nell'elenco dei pacchetti se è presente una vulnerabilità - #10983

  • Visualizzare i dettagli della vulnerabilità del pacchetto nel riquadro dei dettagli del pacchetto di PMUI - #10985

  • Aggiungere collegamenti deprecati nella pagina Dettagli nell'interfaccia utente pm - #10996

  • [Funzionalità]: Rendere configurabile il numero di tentativi e il comportamento di backoff per i client NuGet - #11027

  • [Funzionalità]: risolvere tutte le regole di installazione dei pacchetti per gli spazi dei nomi dei pacchetti funzionano negli scenari PackageReference e PackageDownload. - #11035

  • [Funzionalità]: Risolvere tutte le regole di installazione dei pacchetti per gli spazi dei nomi dei pacchetti funzionano nei progetti di stile Di configurazione pacchetti - #11036

Problemi corretti in questa versione

controller di dominio:

  • Provare a rimuovere l'estendibilità che consente la visualizzazione di altri gestori pacchetti come compatibili - #6623

  • Interrompere l'uso di EmbedInteropTypes per i pacchetti/assembly di extenbility vs di NuGet - #10892

  • Project.nuget.g.targets non deve anteporre a MSBuildAllProjects in MSBuild 16 o versione successiva - #10895

  • Rimuovere le API di base obsolete - #10940

  • Unire NuGet.SolutionRestoreManager.Interop in NuGet.VisualStudio - #10957

  • Remove RuntimeEnvironmentHelper.IsDev14 - #11000

  • Aggiornare Newtonsoft.Json alla versione 13.0.1 - #11095

  • [DCR]: Rinominare la funzionalità packageNamespaces in packageSourceMapping - #11205

Bug:

  • L'installazione con la modalità di salvataggio del pacchetto "nuspec" viene sempre reinstalla - #2402

  • Update-Package -reinstall -ProjectName <project> non funziona per la richiesta pull - #6088

  • "Un elemento con la stessa chiave è già stato aggiunto" - quando project graph ha projectName == packageRef name (della stessa versione) - #6795

  • [Errore di test] Suggerire di rimuovere la seconda stringa duplicata "Accettazione della licenza" nella finestra di dialogo "Accettazione della licenza" - #8162

  • Non è possibile rimuovere la chiave di configurazione usando nuget.exe - #8223

  • msbuild /t:Restore e Visual Studio producono file di asset diversi quando il nome dell'assembly != nome del progetto - #8272

  • L'interfaccia utente pm non umanizza il conteggio dei download quando 999.500 <= conteggio <=999.999 - #8800

  • Il suggerimento di Roslyn Analyzer "Install with package manager" apre NuGet nella scheda errata - #10124

  • StaticGraph Restore deve chiaramente chiamare quando un progetto non KnownToBeMSBuildFormat è quando viene chiamato tramite un file di soluzione - #10363

  • Il comando "nuget spec" genera un file con estensione nuspec con un'iconaUrl - #10400

  • Rfc3161TimestampTokenInfo.GetNonce può generare - #10484

  • Verificare che il comando non sia disabilitato in Mono - #10585

  • Il metodo CreateLockFileTargetLibrary rallenta l'operazione di ripristino - #10614

  • PackageArchieveReader non esegue l'override di CopyNupkgAsync in modo che l'estrazione dei pacchetti non riesca - #10708

  • Propagare le informazioni sugli spazi dei nomi dei pacchetti al comando restore - #10736

  • Verificare che il filtro degli spazi dei nomi sia rispettato in packages.config package installation/updates in PMUI - #10738

  • NuGet.Packaging.Extraction: eccezioni dalle risorse non trovate - #10776

  • Impossibile usare PackageReadmeFile incorporato quando si usa snupkg per i simboli - #10791

  • Rimuovere le opzioni di ritardo dell'interfaccia utente ridondanti nell'inizializzazione del progetto NuGet - #10824

  • Rimuovere le enumerazioni ToList non necessarie nei percorsi di codice di ripristino - #10835

  • Contrassegnare IVsPackageInstallerServices come deprecato - #10836

  • I pacchetti NuGet scaricati più di 1 miliardo di volte mostrano l'unità errata - #10864

  • Difficile visualizzare il colore di sfondo del numero a destra delle schede "Aggiornamenti" e "Consolida" nel tema Scuro - #10896

  • Miglioramenti di IVsProjectRestoreInfoSource - #10898

  • packages.lock.json interrotto con il progetto C# in stile SDK destinato a net5.0-windows - #10901

  • Aggiungere un'implementazione predefinita per IVsSolutionRestoreService4 - #10908

  • [Velocità di risposta] Rimuovere rpc implicite dal thread in background tramite estensioni GetServiceAsync non necessario - #10916

  • Il boxing di bool consiste nel calcolare il codice hash che causa allocazioni eccessive - #10917

  • L'iterazione delle dipendenze della libreria causa l'over-allocation degli enumeratori - #10918

  • La ricerca nella cache di compatibilità alloca Func per ogni ricerca - #10919

  • Sovrasegnazioni di WhereListIterator in DependencyWalker.CreateGraphNode - #10920

  • Eccezione durante il ripristino: "Ripristinare i metadati non visualizza l'elenco dei framework di destinazione necessari" - #10924

  • Condividere un riduttore del framework tra convenzioni di codice gestito - #10925

  • NuGet VSIX viene generato con reindirizzamenti di binding non corretti - #10946

  • NuGet Gestione pacchetti i ritardi dell'interfaccia utente durante l'esecuzione di script init - #10947

  • SourceUri di supporto passato al pacchetto nuget restore/install e dotnet restore o ad altri comandi equivalenti - #10948

  • Supporto dei filtri degli spazi dei nomi per il comando di installazione nuget.exe - #10961

  • Interrompere la generazione di proprietà non elaborate per ogni segmento - #10969

  • NU1605 imprevisto dal riferimento transitivo che non è mai stato selezionato (sottografo estratto) - #10972

  • NuGet.Localization non ha un'icona del pacchetto - #10975

  • Evitare di ridimensionare inutilmente il dizionario durante il calcolo della chiusura del progetto - #10976

  • Documentazione in conflitto su I Impostazioni. AddOrUpdate - #10980

  • Usare una matrice di byte in pool durante la copia di file e la convalida delle firme - #10988

  • Evitare allocazioni Task.WhenAny in dependency walker - #10989

  • Verificare che il filtro degli spazi dei nomi sia rispettato in packages.config package installation/updates PMC - #11001

  • Verificare che il filtro degli spazi dei nomi sia rispettato nell'API del programma di installazione del pacchetto packages.config - #11002

  • [Bug]: L'interfaccia utente pm mostra 0 numero di download quando il pacchetto selezionato è già installato - #11012

  • Ridurre le allocazioni in VersionFormatter - #11014

  • Tipi inutilizzati obsoleti: LibraryDependencyType e correlati - #11015

  • [Bug]: nuget.exe install packages.config non rispetta -PackageSaveMode nuspec - #11018

  • [Bug]: $(IsPackable) non è racchiuso tra virgolette - #11025

  • Creare test Apex con repository multi source per il filtro dello spazio dei nomi del pacchetto PMUI - #11026

  • [Bug]: [Accessibilità] Difficile leggere i collegamenti nei risultati della ricerca dell'interfaccia utente pm usando tema chiaro o scuro - #11055

  • IVsSolutionRestoreService4 deve estendere IVsSolutionRestoreService3 - #11098

  • [Bug]: I collegamenti consultivi devono essere allineati nel riquadro dei dettagli di PMUI - #11101

  • La descrizione comando dell'icona di avviso delle versioni del pacchetto vulnerabile/deprecazione installata non è chiara - #11103

  • [Velocità di risposta] RestoreOperationLogger+StatusBarProgress.Dispose bloccando un thread del pool di thread in attesa del thread dell'interfaccia utente - #11115

  • Aggiungere tempo dall'ultima metrica di ripristino - #11124

  • [Bug]: nuget.exe regressione nella gestione delle voci ricorsive <files> comprese tra 5.9.1 e 5.10.0 - #11125

  • Await WhenNominated quando un progetto ha una candidatura in sospeso - #11132

  • Opzione sourceUri di supporto passata al pacchetto dotnet add - #11140

  • [Bug]: L'interfaccia utente di Visual Studio PM non visualizza icone JPEG per i pacchetti - #11144

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

  • [Bug]: dotnet list package --outdated --interactive rende il provider di credenziali invalidare la cache per ogni pacchetto elencato - #11169

  • [Bug]: gli spazi dei nomi dei pacchetti per gli scenari packages.config usano tutte le origini come opzione di fallback quando non vengono trovati spazi dei nomi corrispondenti per un pacchetto - #11170

  • Evitare ricerche MEF nel thread dell'interfaccia utente durante l'inizializzazione dei progetti NuGet - #11176

  • [Bug]: Descrizione comando nell'immagine dell'indicatore di avviso nella scheda Installato non funziona più - #11183

  • Tutte le chiamate ServiceLocator che recuperano i servizi MEF devono evitare il thread dell'interfaccia utente. - #11201

  • [Bug]: Evento di telemetria mancante in Visual Studio - #11206

  • Evitare chiamate duplicate EnvDTEProjectUtility.IsSupportedAsync - #11207

  • Aggiungere IVsSolutionManager.GetSolutionDirectoryAsync: migliorare le prestazioni e arrestare il blocco del thread chiamante in percorsi di codice asincroni. - #11208

  • Rinominare tipi/variabili nel codice product/test per riflettere il nuovo nome per la funzionalità spazi dei nomi del pacchetto - #11216

  • [Bug]: La compilazione ArPow non funziona correttamente quando in una sottodirectory di un repository Git non correlato - #11227

  • dotnet list package --vulnerable, --deprecated, --obsoleted non funziona per positivi transitive-only - #10767

Elenco di tutti i problemi risolti in questa versione - 6.0

Elenco dei commit in questa versione - 6.0.0

Riepilogo: Novità nella versione 6.0.1

Solo Visual Studio è stato aggiornato con questa versione di NuGet.

Problemi corretti in questa versione

  • [Bug]: Impossibile ottenere INuGetProjectService dal Service Broker in Visual Studio 17 - #11367
  • [Bug]: Gestione pacchetti'inizializzazione della console potrebbe causare deadlock - #11320

Elenco dei commit in questa versione - 6.0.1

Contributi della community

Grazie a tutti i collaboratori che hanno contribuito a rendere incredibile questa versione di NuGet.

Chi Prs Problemi
omajid 3866 Handle nonce being null in Rfc3161TimestampTokenInfo - #10484
marcin-krystianc 3934 Aggiunta di una cache per LockFileTargetLibrary - #10614
krafs 4151 Rimozione del valore restituito dalla documentazione in I Impostazioni. AddOrUpdate - #10980
huangqinjin 4148 Correzione di PackageSaveMode nuspec reinstalla sempre - #2402
Insonniak47 4190 fix(docs): Rimuovere il collegamento a un collegamento chiuso/dead-end in Linee guida per i contributi - #8987
marcin-krystianc 4194 Creare l'account degli script di prestazioni per gli errori dell'operazione di ripristino - #9968
eriawan 4159 Correzione di Racchiudi ($IsPackable) con virgolette singole - #11025
huangqinjin 4193 L'installazione di packages.config deve rispettare PackageSaveMode - #11018
mfkl 4199 test: usare il nuovo DependencyGraphSpec - #11168
omajid 4254 Usare --work-tree con git apply - #11227

Commenti e suggerimenti

I commenti degli utenti sono importanti. In caso di problemi con questa versione, controllare i problemi di GitHub e visual Studio Developer Community per individuare i problemi esistenti. Per i nuovi problemi all'interno di NuGet, segnalare un problema di GitHub. Per problemi generali relativi all'esperienza nuGet, segnalarlo tramite l'opzione Segnala un problema nell'IDE preferito in Guida > segnala un problema.