Notas de la versión de NuGet 6.0
Vehículos de distribución de NuGet:
Versión de NuGet | Disponible en la versión de Visual Studio | Disponible en los SDK de .NET |
---|---|---|
6.0.0 | Visual Studio 2022, versión 17.0.0 | 6.0.01 |
6.0.1 | Visual Studio 2022, versión 17.0.2 | N/D |
6.0.2 | Visual Studio 2022, versión 17.0.11 | 6.0.3011 |
6.0.3 | Visual Studio 2022, versión 17.0 | 6.0.1101 |
6.0.5 | N/D | 6.0.1181 |
6.0.6 | N/D | 6.0.1271 |
1 Se instala con Visual Studio 2022 con la carga de trabajo de .NET Core
- [Seguridad]: Aviso de seguridad de Microsoft CVE-2024-0057 | Vulnerabilidad de omisión de característica de seguridad del cliente NuGet: n.º 12653
- [Seguridad]: Aviso de seguridad de Microsoft CVE-2023-29337 | Vulnerabilidad de ejecución remota de código del cliente NuGet: n.º 12653
Nota
Hay un cambio importante de comportamiento en Linux. La ubicación de la carpeta temporal, donde NuGet almacena archivos temporales durante sus diversas operaciones, ha cambiado de /tmp/NuGetScratch
a /tmp/NuGetScratch<username>
. Por ejemplo, para el usuario User1, la carpeta temporal será /tmp/NuGetScratchUser1
.
- [Seguridad]: Aviso de seguridad de Microsoft CVE-2022-41032 | Vulnerabilidad de elevación de privilegios de .NET: n.º 12149
Nota
En Visual Studio 17.0, MSBuild 17.0 y .NET 6.0 se necesita NuGet.exe 6.0 o posterior.
- [Seguridad]: Aviso de seguridad de Microsoft CVE 2022-30184 | Vulnerabilidad de divulgación de información de .NET: n.º 11883
🎉 Esta es la primera versión en ofrecer compatibilidad completa de creación y restauración para paquetes NuGet destinados a .NET 6.0 🎉
NuGet 6.0 es la primera versión en ofrecer compatibilidad completa de creación y restauración para paquetes NuGet destinados a .NET 6.0. Ahora puede tener como destino las siguientes plataformas:
- net6.0
- net6.0-windows
- net6.0-android
- net6.0-ios
- net6.0-macos
- net6.0-maccatalyst
- net6.0-tvos
- net6.0-tizen
Si no está familiarizado con los destinos de .NET 6.0 actuales o cómo serán los futuros, no olvide consultar la especificación TFM de .NET 6.0.
A principios de este año, muchos administradores de paquetes descubrieron los ataques de confusión de dependencias, en los que se engañaba a un usuario para instalar una dependencia malintencionada en lugar de la que pretendía. Para fortalecer la cadena de suministro de software contra estos ataques, el equipo de NuGet ha desarrollado una nueva característica que le permite asignar las dependencias a orígenes específicos. A continuación se muestra un ejemplo de cómo puede usar la asignación de origen para proteger los proyectos.
<!-- 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>
Puede obtener más información sobre la asignación de origen en nuestro blog publicado este año.
Al usar el Administrador de paquetes NuGet en Visual Studio, ahora verá vulnerabilidades para los paquetes, incluidos detalles como el número y la gravedad de las vulnerabilidades, así como vínculos directos para obtener más información sobre los avisos.
Ahora hay una marca NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY
para mejorar el comportamiento de reintento y retroceso de los clientes NuGet, como aumentar la cantidad máxima de reintentos y aumentar el retraso para obtener una experiencia más resistente al encontrar una conexión a Internet más débil.
Ahora puede usar la marca <AllowedOutputExtensionsInPackageBuildOutputFolder>
de MSBuild para editar las extensiones de archivo incluidas en la salida de compilación del paquete. Esto le proporciona más control sobre las extensiones que se incluyen en la carpeta de salida de compilación.
Los paquetes en desuso en Visual Studio ahora incluyen un vínculo al paquete alternativo sugerido que se debe usar. Puede usar esta característica para examinar e instalar rápidamente paquetes que se mantienen de forma activa.
Ahora puede agregar un archivo LÉAME.md de paquete directamente en Visual Studio. Un archivo LÉAME ayuda a comunicar información importante sobre el paquete. A menudo es el primer elemento que verá un usuario al visitar el paquete en NuGet.org. Los archivos LÉAME suelen incluir información sobre lo siguiente:
- Qué hace el paquete
- Por qué es útil el proyecto
- Cómo pueden comenzar los usuarios a utilizar el paquete
- Dónde pueden obtener ayuda los usuarios o contribuir al paquete
Puede obtener más información sobre cómo agregar un archivo LÉAME al paquete NuGet en nuestro blog.
En Visual Studio 2022, NuGet ha redefinido el contrato entre la restauración de paquetes NuGet y los componentes comunes de Visual Studio para mejorar el rendimiento de las soluciones de gran tamaño llamando solo a la restauración una vez en lugar de hacerlo varias veces. Esto mejora significativamente el tiempo necesario para que los procesos en segundo plano se completen.
Instale Visual Studio 2022 Preview y háganos saber si observa una experiencia más rápida al cargar soluciones grandes o cambiar entre ramas.
Las API de Visual Studio SolutionRestoreManager de NuGet se han movido al paquete NuGet.VisualStudio
NuGet.SolutionRestoreManager.Interop ya no se actualiza y sus API se han combinado en el paquete NuGet.VisualStudio. Si va a actualizar una extensión de Visual Studio existente para trabajar con Visual Studio 2022 (17.0) y anteriormente usaba NuGet.SolutionRestoreManager.Interop, debe desinstalar ese paquete y actualizar NuGet.VisualStudio a la versión 6.0.0 o instalarla. Los espacios de nombres y las clases siguen siendo los mismos, por lo que es compatible desde una perspectiva de API.
Además, después del cambio en la directiva de Visual Studio, NuGet.VisualStudio ya no usa EmbedInteropTypes
.
Por tanto, la extensión tendrá una referencia en tiempo de compilación a NuGet.VisualStudio.dll.
Nuget indica a Visual Studio que use redirecciones de enlace, por lo que la extensión no se verá afectada cuando NuGet actualice a las versiones más recientes y la extensión se compile en una versión anterior de nuestro ensamblado.
Por este motivo, puede suprimir los ensamblados de NuGet en vsix para reducir el tamaño de la descarga.
Los paquetes de NuGet se actualizarán para hacerlo automáticamente en NuGet 6.2 (para Visual Studio 17.2).
Para suprimir los ensamblados de NuGet en vsix, agregue lo siguiente al archivo del proyecto:
<ItemGroup>
<SuppressFromVsix Include="NuGet.VisualStudio.dll" Visible="false" />
<SuppressFromVsix Include="NuGet.VisualStudio.Contracts.dll" Visible="false" />
</ItemGroup>
Características:
Adición de enlace para excluir determinadas extensiones de salida de compilación del paquete nuget: n.º 10690
Implementación de una nueva precedencia para TFM de Xamarin al usar net6.0+: n.º 10717
Implementación de la advertencia de maccatalyst al "revertir" a xamarin.ios para proyectos de net6.0+: n.º 10718
Adición de compatibilidad con espacios de nombres de paquete como parte de la configuración: solo se agrega una funcionalidad de lectura: n.º 10725
Espacios de nombres de paquete: Cuenta para el filtrado de espacios de nombres de paquete en la descarga de paquetes en Restaurar de PackageReference: n.º 10732
Se ha agregado compatibilidad con el filtrado de espacios de nombres en packages.config restore en nuget.exe y msbuild /t:restore: n.º 10737
Se ha agregado un contrato para identificar un origen de restauración, para ayudar a nuget a mejorar las restauraciones por lotes o los cambios de rama. - n.º 10807
Se ha agregado compatibilidad con net6.0-tizen y net6.0-android: n.º 10819
Se ha agregado compatibilidad con el filtrado de espacios de nombres para packages.config restore en Visual Studio: n.º 10823
Se ha agregado compatibilidad con TfmSpecificDebugSymbolsFile para proporcionar símbolos en la compilación interna: n.º 10913
Representación del icono de advertencia en la pestaña Instalado si hay paquetes vulnerables instalados: n.º 10982
Representación del icono de advertencia por paquete en la lista de paquetes si hay una vulnerabilidad: n.º 10983
Representación de los detalles de vulnerabilidad del paquete en el panel de detalles del paquete de PMUI: n.º 10985
Se han agregado vínculos de desuso en la página Detalles de la interfaz de usuario de PM: n.º 10996
[Característica]: Configuración del comportamiento de reintentos y retroceso para los clientes NuGet: n.º 11027
[Característica]: Solución de todas las reglas de instalación de paquetes para los espacios de nombres de paquete en escenarios PackageReference y PackageDownload. - n.º 11035
[Característica]: Solución de todas las reglas de instalación de paquetes para los espacios de nombres de paquete en proyectos de estilo de configuración de paquetes: n.º 11036
DCR:
Posibilidad de quitar la extensibilidad que permite que otros administradores de paquetes se muestren como compatibles: n.º 6623
No usar EmbedInteropTypes para paquetes o ensamblados de VS de NuGet: n.º 10892
Project.nuget.g.targets no debe anteponerse a MSBuildAllProjects en MSBuild 16 o posterior: n.º 10895
Eliminación de las API principales obsoletas: n.º 10940
Combinación de NuGet.SolutionRestoreManager.Interop en NuGet.VisualStudio: n.º 10957
Eliminación de RuntimeEnvironmentHelper.IsDev14: n.º 11000
Actualización de Newtonsoft.Json a 13.0.1: n.º 11095
[DCR]: Cambio de nombre de la característica packageNamespaces a packageSourceMapping: n.º 11205
Errores:
La instalación con el modo de guardado de paquetes "nuspec" siempre repite la instalación: n.º 2402
Update-Package -reinstalar -ProjectName
<project>
no funciona para PR: n.º 6088"Ya se ha agregado un elemento con la misma clave": cuando el grafo de proyectos tiene projectName == nombre packageRef (de la misma versión): n.º 6795
[Error de prueba] Sugerencia para quitar la segunda cadena duplicada "Aceptación de licencia" en el cuadro de diálogo "Aceptación de licencia": n.º 8162
No se puede quitar la clave de configuración mediante nuget.exe: n.º 8223
msbuild /t:Restore y Visual Studio generan archivos de recursos diferentes cuando el nombre del ensamblado no es igual al nombre del proyecto: n.º 8272
La interfaz de usuario de PM no humaniza el recuento de descargas cuando 999 500 <= count <=999 999: n.º 8800
La sugerencia de Roslyn Analyzer "instalar con el administrador de paquetes" abre NuGet en una pestaña incorrecta: n.º 10124
La restauración de StaticGraph debe destacar claramente cuando un proyecto no es
KnownToBeMSBuildFormat
cuando se llama desde un archivo de solución: n.º 10363El comando "nuget spec" genera un archivo .nuspec con iconUrl: n.º 10400
Rfc3161TimestampTokenInfo.GetNonce puede iniciar excepciones: n.º 10484
Comprobación de que el comando no está deshabilitado en Mono: n.º 10585
El método CreateLockFileTargetLibrary ralentiza la operación de restauración: n.º 10614
PackageArchieveReader no invalida CopyNupkgAsync, por lo que se produce un error en la extracción de paquetes: n.º 10708
Propagación de la información de los espacios de nombres del paquete al comando restore: n.º 10736
Comprobación de que el filtrado de espacios de nombres se respeta en instalaciones o actualizaciones de paquetes de packages.config en PMUI: n.º 10738
NuGet.Packaging.Extraction: excepciones de recursos no encontrados: n.º 10776
No se puede usar la inserción de PackageReadmeFile al utilizar snupkg para símbolos: n.º 10791
Eliminación de modificadores de retraso de la interfaz de usuario redundantes en la inicialización del proyecto NuGet: n.º 10824
Eliminación de enumeraciones ToList innecesarias en rutas de código de restauración: n.º 10835
Marcado de IVsPackageInstallerServices como en desuso: n.º 10836
Los paquetes NuGet descargados más de 1000 millones de veces muestran la unidad incorrecta: n.º 10864
Es difícil ver el color de fondo del número situado a la derecha de las pestañas "Actualizaciones" y "Consolidar" en el tema Oscuro: n.º 10896
Mejoras de IVsProjectRestoreInfoSource: n.º 10898
packages.lock.json se interrumpe con el proyecto de C# de estilo SDK destinado a net5.0-windows: n.º 10901
Adición de una implementación predeterminada para IVsSolutionRestoreService4: n.º 10908
[Capacidad de respuesta] Eliminación de RPC implícito del subproceso en segundo plano mediante extensiones GetServiceAsync innecesarias: n.º 10916
La conversión boxing de bool consiste en calcular el código hash que provoca asignaciones excesivas: n.º 10917
La iteración por las dependencias de biblioteca provoca una asignación excesiva de enumeradores: n.º 10918
La búsqueda de caché de compatibilidad asigna Func para cada búsqueda: n.º 10919
Sobreasignaciones de WhereListIterator en DependencyWalker.CreateGraphNode: n.º 10920
Excepción al restaurar: "Falta la lista de marcos de destino necesarios en Restaurar metadatos": n.º 10924
Uso compartido de un reductor de marcos entre convenciones de código administrado: n.º 10925
NuGet VSIX se genera con redirecciones de enlace incorrectas: n.º 10946
Retrasos de la interfaz de usuario del Administrador de paquetes NuGet al ejecutar scripts de inicialización: n.º 10947
Compatibilidad con sourceUri pasado en nuget restore/install y dotnet restore package u otros comandos equivalentes: n.º 10948
Compatibilidad con el filtrado de espacios de nombres para el comando nuget.exe install: n.º 10961
No generar propiedades sin procesar para cada segmento: n.º 10969
NU1605 inesperado desde una referencia transitiva que nunca se ha seleccionado (subgráfico eliminado): n.º 10972
NuGet.Localization no tiene ningún icono de paquete: n.º 10975
Se evita cambiar innecesariamente el tamaño del diccionario al calcular el cierre del proyecto: n.º 10976
Documentación en conflicto sobre ISettings.AddOrUpdate: n.º 10980
Uso de una matriz de bytes agrupada al copiar archivos y validar firmas: n.º 10988
Se evitan asignaciones task.WhenAny en el explorador de dependencias: n.º 10989
Comprobación de que el filtrado de espacios de nombres se respeta en la instalación y actualizaciones de paquetes de packages.config en PMC: n.º 11001
Comprobación de que el filtrado de espacios de nombres se respeta en la API de instalador de IV de instalación y actualizaciones de paquetes de packages.config: n.º 11002
[Error]: La interfaz de usuario de PM muestra un recuento de 0 descargas cuando el paquete seleccionado ya está instalado: n.º 11012
Reducción de asignaciones en VersionFormatter: n.º 11014
Tipos obsoletos sin usar: LibraryDependencyType y relacionados: n.º 11015
[Error]:
nuget.exe install packages.config
no respeta-PackageSaveMode nuspec
- n.º 11018[Error]:
$(IsPackable)
no está entre comillas: n.º 11025Creación de pruebas de Apex con repositorios de varios orígenes para el filtrado de espacio de nombres del paquete PMUI: n.º 11026
[Error]: [Accesibilidad] Vínculos difíciles de leer en los resultados de la búsqueda de la interfaz de usuario de PM con el tema Claro u Oscuro: n.º 11055
IVsSolutionRestoreService4 debe extender IVsSolutionRestoreService3: n.º 11098
[Error]: Los vínculos de asesoramiento deben alinearse en el panel de detalles de PMUI: n.º 11101
La información sobre herramientas del icono de advertencia de versiones del paquete instalado vulnerables o en desuso no está claro: n.º 11103
[Capacidad de respuesta] RestoreOperationLogger+StatusBarProgress.Dispose bloquea un subproceso de grupo de subprocesos en espera del subproceso de la interfaz de usuario: n.º 11115
Se ha agregado la métrica de la hora desde la última restauración: n.º 11124
[Error]: Regresión de nuget.exe en el control de entradas
<files>
recursivas entre 5.9.1 y 5.10.0: n.º 11125Espera de WhenNominated cuando un proyecto tiene una nominación pendiente: n.º 11132
Compatibilidad con la opción sourceUri que se pasa en dotnet add package: n.º 11140
[Error]: La interfaz de usuario PM de VS no muestra iconos JPEG para los paquetes: n.º 11144
UIDelay:
nuget.packagemanagement.visualstudio.dll!NuGet.PackageManagement.VisualStudio.VsCoreProjectSystemReferenceReader+<GetProjectReferencesAsync>d__
- Proyectos de CPS: n.º 11162[Error]:
dotnet list package --outdated --interactive
hace que el proveedor de credenciales invalide la memoria caché de todos los paquetes enumerados: n.º 11169[Error]: Los espacios de nombres de paquete para escenarios de packages.config usan todos los orígenes como opción de reserva cuando no se encuentran espacios de nombres coincidentes para un paquete: n.º 11170
Se evitan búsquedas MEF en el subproceso de la interfaz de usuario durante la inicialización de proyectos NuGet: n.º 11176
[Error]: La información sobre herramientas en la imagen del indicador de advertencia de la pestaña Instalado ya no funciona: n.º 11183
Todas las llamadas a ServiceLocator que recuperan servicios MEF deben evitar el subproceso de la interfaz de usuario. - n.º 11201
[Error]: Falta el evento de telemetría en Visual Studio: n.º 11206
Se evitan llamadas a EnvDTEProjectUtility.IsSupportedAsync duplicadas: n.º 11207
Adición de IVsSolutionManager.GetSolutionDirectoryAsync: mejora del rendimiento y detención del bloqueo del subproceso de llamada en rutas de código asincrónicas. - n.º 11208
Cambio de nombre de los tipos o variables del código de producto o prueba para reflejar el nuevo nombre de la característica de espacios de nombres de paquete: n.º 11216
[Error]: La compilación de ArPow no funciona bien cuando se encuentra en un subdirectorio de un repositorio de Git no relacionado: n.º 11227
dotnet list package --vulnerable, --deprecated, --outdated no funciona para positivos solo transitivos: n.º 10767
Lista de todos los problemas corregidos en esta versión: 6.0
Lista de confirmaciones en esta versión: 6.0.0
Con esta versión de NuGet solo se ha actualizado Visual Studio.
- [Error]: No se puede obtener INuGetProjectService de Service Broker en Visual Studio 17: n.º 11367
- [Error]: La inicialización de la consola del Administrador de paquetes puede provocar interbloqueos: n.º 11320
Lista de confirmaciones en esta versión: 6.0.1
Gracias a todos los colaboradores que han ayudado a que esta versión de NuGet sea impresionante.
Quién | PR | Issues |
---|---|---|
omajid | 3866 | Control de nonce NULL en Rfc3161TimestampTokenInfo: n.º 10484 |
marcin-krystianc | 3934 | Adición de una caché para LockFileTargetLibrary: n.º 10614 |
krafs | 4151 | Se ha quitado el valor devuelto de la documentación sobre ISettings.AddOrUpdate: n.º 10980 |
huangqinjin | 4148 | Corrección de la reinstalación continua de PackageSaveMode en nuspec: n.º 2402 |
Insomniak47 | 4190 | fix(docs): eliminación del vínculo a un vínculo cerrado o inactivo en las instrucciones de contribución: n.º 8987 |
marcin-krystianc | 4194 | Inclusión de los scripts de rendimiento en errores de operación de restauración: n.º 9968 |
eriawan | 4159 | Corrección de la inclusión de ($IsPackable) con comillas simples: n.º 11025 |
huangqinjin | 4193 | La instalación de packages.config debe respetar PackageSaveMode: n.º 11018 |
mfkl | 4199 | Prueba: use del nuevo DependencyGraphSpec: n.º 11168 |
omajid | 4254 | Uso de --work-tree con git apply: n.º 11227 |
Sus comentarios son importantes. Si hay algún problema con esta versión, consulte las incidencias de GitHub y Visual Studio Developer Community para ver si hay incidencias existentes. Para incidencias nuevas en NuGet, notifique una incidencia en GitHub. Para incidencias generales de la experiencia de NuGet, háganoslo saber mediante la opción Notificar un problema que se encuentra en su IDE favorito en Ayuda >Notificar un problema.