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

Resumen: Novedades de la versión 6.0.6

  • [Seguridad]: Aviso de seguridad de Microsoft CVE-2024-0057 | Vulnerabilidad de omisión de característica de seguridad del cliente NuGet: n.º 12653

Resumen: Novedades de la versión 6.0.5

  • [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.

Resumen: Novedades de la versión 6.0.3

  • [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.

Resumen: Novedades de la versión 6.0.2

  • [Seguridad]: Aviso de seguridad de Microsoft CVE 2022-30184 | Vulnerabilidad de divulgación de información de .NET: n.º 11883

Resumen: Novedades de la versión 6.0.0

🎉 Esta es la primera versión en ofrecer compatibilidad completa de creación y restauración para paquetes NuGet destinados a .NET 6.0 🎉

Compatibilidad con .NET 6

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

.NET 6

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.

Asignación de origen

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.

Vulnerabilidades de paquetes en Visual Studio

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.

Visual Studio Package Vulnerabilities

Comportamiento de reintento y retroceso

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.

Exclusión de extensiones de archivo predeterminadas

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.

Información de desuso mejorada en Visual Studio

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.

Visual Studio Package Deprecations

Adición de un archivo LÉAME de paquete en Visual Studio

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.

Carga de soluciones y cambio de ramas más rápidos en Visual Studio

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

Problemas corregidos en esta versión

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.º 10363

  • El 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.º 11025

  • Creació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.º 11125

  • Espera 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

Resumen: Novedades de la versión 6.0.1

Con esta versión de NuGet solo se ha actualizado Visual Studio.

Problemas corregidos en esta versión

  • [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

Contribuciones de la comunidad

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

Se agradecen los comentarios

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.