Partilhar via


Notas sobre a versão do NuGet 6.0

Veículos de distribuição do NuGet:

Versão do NuGet Disponível na versão do Visual Studio Disponível em SDKs do .NET
6.0.0 Visual Studio 2022 versão 17.0.0 6.0.01
6.0.1 Visual Studio 2022 versão 17.0.2 N/D
6.0.2 Visual Studio 2022 versão 17.0.11 6.0.3011
6.0.3 Visual Studio 2022 versão 17.0 6.0.1101
6.0.5 N/D 6.0.1181
6.0.6 N/D 6.0.1271

1 instalado com Visual Studio 2022 com a carga de trabalho do .NET Core

Resumo: novidades na 6.0.6

  • [Segurança]: aviso de Segurança da Microsoft CVE-2024-0057 | Vulnerabilidade de desvio de recurso de segurança do cliente do NuGet: #12653

Resumo: novidades na 6.0.5

  • [Segurança]: aviso de Segurança da Microsoft CVE-2023-29337 | Vulnerabilidade de execução remota de código do cliente do NuGet: #12653

Observação

O Linux apresenta uma alteração interruptiva de comportamento. O local da pasta temporária, onde o NuGet armazena arquivos temporários durante suas várias operações, foi alterado de /tmp/NuGetScratch para /tmp/NuGetScratch<username>. Por exemplo, para o usuário User1, a pasta temporária será /tmp/NuGetScratchUser1.

Resumo: novidades na 6.0.3

  • [Segurança]: aviso de Segurança da Microsoft CVE-2022-41032 | Vulnerabilidade de elevação de privilégio do .NET: #12149

Observação

O Visual Studio 17.0, o MSBuild 17.0 e o .NET 6.0 exigem NuGet.exe 6.0 ou posterior.

Resumo: novidades na 6.0.2

  • [Segurança]: aviso de Segurança da Microsoft CVE-2022-30184 | Vulnerabilidade de divulgação de informações confidenciais: #11883

Resumo: novidades no 6.0.0

🎉 Esta é a primeira versão a oferecer suporte completo de criação e restauração para pacotes do NuGet direcionados ao .NET 6.0 🎉

Suporte ao .NET 6

O NuGet 6.0 é a primeira versão a oferecer suporte completo de criação e restauração para pacotes do NuGet direcionados ao .NET 6.0. Agora é possível direcionar as seguintes estruturas de destino:

  • 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 você não estiver familiarizado com os destinos do .NET 6.0 hoje ou com sua aparência no futuro, não se esqueça de verificar a especificação do TFM do .NET 6.0.

Mapeamento de origem

No início deste ano, muitos gerentes de pacotes tomaram conhecimento dos ataques de confusão de dependência nos quais um usuário pode ser enganado a instalar uma dependência maliciosa em vez da que pretendiam. Para fortalecer a cadeia de suprimentos de software contra esses ataques, a equipe do NuGet desenvolveu um novo recurso que permite mapear as dependências para origens específicas. Veja abaixo um exemplo de como você pode usar o mapeamento de origem para proteger seus projetos.

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

Você pode ler mais sobre mapeamento de origem em nosso blog lançado no início deste ano.

Vulnerabilidades de pacote no Visual Studio

Ao usar o Gerenciador de Pacotes do NuGet no Visual Studio, agora você verá vulnerabilidades de pacote para seus pacotes, incluindo detalhes como o número e a gravidade das vulnerabilidades, bem como links diretos para saber mais sobre os avisos.

Visual Studio Package Vulnerabilities

Comportamento de recuo e repetição

Agora há um sinalizador NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY para melhorar o comportamento de recuo e repetição dos clientes do NuGet, como aumentar a quantidade máxima de repetições e aumentar o atraso para uma experiência mais resiliente ao encontrar uma conexão de internet mais fraca.

Excluir extensões de arquivo padrão

Agora você pode usar o sinalizador do MSBuild <AllowedOutputExtensionsInPackageBuildOutputFolder> para editar as extensões de arquivo incluídas na saída de compilação do seu pacote. Isso lhe dá mais controle sobre as extensões que estão sendo incluídas na pasta de saída da compilação.

Informações de preterimento aprimoradas no Visual Studio

Os pacotes preteridos no Visual Studio agora incluem um link para o pacote alternativo sugerido para uso. É possível usar esse recurso para procurar e instalar rapidamente pacotes que são mantidos de forma ativa.

Visual Studio Package Deprecations

Adicionar um pacote LEIAME no Visual Studio

Agora é possível adicionar um arquivo README.md do pacote diretamente no Visual Studio. Um LEIAME ajuda a comunicar informações importantes sobre o seu pacote. Muitas vezes, é o primeiro item que um visitante verá ao acessar o seu pacote no NuGet.org. Os arquivos LEIAME geralmente incluem informações sobre:

  • O que o pacote faz
  • Por que o pacote é útil
  • Como os usuários podem começar a usar o pacote
  • Onde os usuários podem obter ajuda ou contribuir para seu pacote

Você pode ler mais sobre como adicionar um LEIAME ao seu pacote do NuGet em nosso blog.

Carga de solução e comutação de ramificação mais rápidas no Visual Studio

No Visual Studio 2022, o NuGet redefiniu o contrato entre a restauração do pacote do NuGet e os componentes comuns do Visual Studio para melhorar o desempenho de soluções grandes ao chamar a restauração apenas uma vez em vez de várias vezes. Isso melhora significativamente o tempo necessário para que os processamentos em segundo plano sejam concluídos.

Instale a visualização do Visual Studio 2022 e nos diga se você notar uma experiência mais rápida ao carregar suas soluções grandes ou alternar entre branches!

As APIs do Visual Studio SolutionRestoreManager do NuGet foram movidas para o pacote NuGet.VisualStudio

O NuGet.SolutionRestoreManager.Interop não é mais atualizado e suas APIs foram mescladas no pacote NuGet.VisualStudio. Se você estiver atualizando uma extensão existente do Visual Studio para trabalhar com o Visual Studio 2022 (17.0) e estiver usando anteriormente o NuGet.SolutionRestoreManager.Interop, desinstale esse pacote e atualize/instale o NuGet.VisualStudio para a versão 6.0.0. Os namespaces e classes permanecem os mesmos, portanto, é compatível de uma perspectiva de API.

Além disso, após a alteração da política do Visual Studio, o NuGet.VisualStudio não usa mais o EmbedInteropTypes. Portanto, sua extensão terá uma referência de tempo de compilação para NuGet.VisualStudio.dll. O Nuget instrui o Visual Studio a usar redirecionamentos de associação, para que sua extensão não seja afetada quando o NuGet for atualizado para versões mais recentes e sua extensão for compilada em relação a uma versão mais antiga do nosso assembly. Por esse motivo, você pode suprimir os assemblies do NuGet do vsix para reduzir o tamanho do download. Os pacotes do NuGet serão atualizados para fazer isso automaticamente no NuGet 6.2 (para Visual Studio 17.2).

Para suprimir os assemblies do NuGet do vsix, adicione os seguintes itens ao arquivo de projeto:

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

Recursos:

  • Adicione um gancho para excluir determinadas extensões de saída de compilação do pacote do NuGet: #10690

  • Implemente uma precedência nova para TFMs xamarin ao usar net6.0+: #10717

  • Implemente o aviso maccatalyst ao "voltar" para xamarin.ios para projetos net6.0+: #10718

  • Adicione suporte a namespaces de pacote como parte da configuração - adicionar apenas uma capacidade de leitura: #10725

  • Namespaces de pacote: conta para filtragem de namespaces de pacote no download de pacotes durante a restauração com PackageReference: #10732

  • Adicione suporte à filtragem de namespaces em packages.config restore no nuget.exe e msbuild /t:restore: #10737

  • Adicione um contrato para identificar uma origem de restauração, para ajudar o NuGet a aprimorar melhor as restaurações em lote e as trocas de branch. - #10807

  • Adicione suporte para net6.0-tizen e net6.0-android: #10819

  • Adicione suporte de filtragem de namespaces para restauração com packages.config no Visual Studio: #10823

  • Adicione suporte para TfmSpecificDebugSymbolsFile para fornecer símbolos na compilação interna: #10913

  • Mostre ícone de aviso na guia Instalado se houver pacotes vulneráveis instalados: #10982

  • Mostre ícone de aviso por pacote na lista de pacotes se houver uma vulnerabilidade: #10983

  • Mostre detalhes da vulnerabilidade do pacote no painel de detalhes do pacote da interface do usuário do PM: #10985

  • Adicione links de preterimento na página Detalhes na interface do usuário do PM: #10996

  • [Recurso]: torne a contagem de repetições e o comportamento de retirada configuráveis para clientes do Nuget: #11027

  • [Recurso]: aborde todas as regras de instalação de pacote para namespaces de pacote que funcionam nos cenários PackageReference e PackageDownload. - #11035

  • [Recurso]: aborde todas as regras de instalação de pacotes para que os namespaces de pacotes funcionem em projetos no estilo de configuração de pacotes: #11036

Problemas corrigidos nesta versão

DCRs:

  • Considere remova a extensibilidade que permite que outros gerenciadores de pacotes sejam mostrados como compatíveis: #6623

  • Pare de usar EmbedInteropTypes para pacotes/assemblies de extensibilidade do VS do NuGet: #10892

  • O Project.nuget.g.targets não deve preceder para o MSBuildAllProjects no MSBuild 16 ou posterior: #10895

  • Remova as principais APIs obsoletas: #10940

  • Mescle NuGet.SolutionRestoreManager.Interop em NuGet.VisualStudio: #10957

  • Remova RuntimeEnvironmentHelper.IsDev14: #11000

  • Atualize Newtonsoft.Json para 13.0.1: #11095

  • [DCR]: Renomeie o recurso packageNamespaces para packageSourceMapping: #11205

Bugs:

  • A instalação com o modo de salvamento de pacote "nuspec" sempre reinstala: #2402

  • <project> Update-Package -reinstall -ProjectName não funciona para PR: #6088

  • "Um item com a mesma chave já foi adicionado": quando o gráfico do projeto tem projectName == packageRef name (da mesma versão): #6795

  • [Falha no Teste] Sugira a remoção da segunda sequência de caracteres duplicada "Aceitação de licença" na caixa de diálogo "Aceitação de licença": #8162

  • Não é possível remover a chave de configuração usando nuget.exe: #8223

  • O msbuild /t:Restore e o Visual Studio produzem arquivos de ativos diferentes quando assembly name!= project name: #8272

  • A interface do usuário do PM não humaniza a contagem de downloads quando 999.500 <= count <=999.999: #8800

  • A sugestão do analisador Roslyn "instalar com gerenciador de pacotes" abre o NuGet na guia errada: #10124

  • A restauração de StaticGraph deve chamar claramente quando um projeto não é KnownToBeMSBuildFormat quando chamado por meio de um arquivo de solução: #10363

  • O comando "nuget spec" gera um arquivo .nuspec com um iconUrl: #10400

  • O Rfc3161TimestampTokenInfo.GetNonce pode lançar: #10484

  • Verifique se o comando não está desabilitado no Mono: #10585

  • O método CreateLockFileTargetLibrary retarda a operação de restauração: #10614

  • O PackageArchieveReader não substitui o CopyNupkgAsync para que a extração do pacote falhe: #10708

  • Propague informações de namespaces de pacote para o comando “restaurar”: #10736

  • Verifique se a filtragem de namespaces é respeitada na instalação/atualizações do pacote packages.config na interface do usuário do PM: #10738

  • NuGet.Packaging.Extraction: exceções de recursos não encontrados: #10776

  • Não é possível usar o PackageReadmeFile incorporado ao usar o snupkg para símbolos: #10791

  • Remova as opções de atraso de interface do usuário redundantes na inicialização do projeto do NuGet: #10824

  • Remova as enumerações ToList desnecessárias em caminhos de código de restauração: #10835

  • Marcque o IVsPackageInstallerServices como preterido: #10836

  • Pacotes NuGet baixados mais de 1 bilhão de vezes mostram a unidade errada: #10864

  • É difícil ver a cor da tela de fundo do número à direita das guias "Atualizações" e "Consolidar" no tema escuro: #10896

  • Melhorias no IVsProjectRestoreInfoSource: #10898

  • packages.lock.json quebrado com o projeto C# no estilo SDK direcionando para net5.0-windows: #10901

  • Adicione uma implementação padrão para IVsSolutionRestoreService4: #10908

  • [Capacidade de Resposta] Remova o RPC implícito do thread de segundo plano por meio de extensões GetServiceAsync desnecessárias: #10916

  • A conversão boxing de bool para calcular hashcode está causando alocações excessivas: #10917

  • A iteração sobre dependências de biblioteca está causando alocação excessiva de enumeradores: #10918

  • A pesquisa de cache de compatibilidade aloca Func para cada pesquisa: #10919

  • Superalocações de WhereListIterator em DependencyWalker.CreateGraphNode: #10920

  • Exceção durante a restauração: “Metadados de restauração estão faltando na lista de estruturas de destino necessária”: #10924

  • Compartilhe um redutor de estrutura em convenções de código gerenciado: #10925

  • O NuGet VSIX é gerado com redirecionamentos de associação incorretos: #10946

  • A interface do usuário do Gerenciador de Pacotes NuGet demora ao executar scripts de inicialização: #10947

  • Suporte a suporteUri passado no comando nuget restore/install e dotnet restore package ou outros comandos equivalentes: #10948

  • Suporte à filtragem de namespaces para o comando nuget.exe install: #10961

  • Pare de gerar propriedades brutas para cada segmento: #10969

  • NU1605 inesperado de referência transitiva que nunca foi selecionada (subgráfico removido): #10972

  • O NuGet.Localization não tem ícone de pacote: #10975

  • Evite redimensionar desnecessariamente o dicionário ao calcular o fechamento do projeto: #10976

  • Documentação conflitante em ISettings.AddOrUpdate: #10980

  • Use uma matriz de bytes em pool ao copiar arquivos e validar assinaturas: #10988

  • Evite alocações de Task.WhenAny no caminhante de dependência: #10989

  • Verifique se a filtragem de namespaces é respeitada no PMC das atualizações/instalação de pacotes packages.config: #11001

  • Verifique se a filtragem de namespaces é respeitada na API de instalação dos IVs nas atualizações/instalação de pacotes packages.config: #11002

  • [Bug]: a interface do usuário do PM mostra contagem 0 de download quando o pacote selecionado já está instalado: #11012

  • Reduza alocações no VersionFormatter: #11014

  • Tipos obsoletos não utilizados: LibraryDependencyType e relacionados: #11015

  • [Bug]: nuget.exe install packages.config não respeita -PackageSaveMode nuspec - #11018

  • [Bug]: $(IsPackable) não é citado: #11025

  • Crie testes do Apex com repositórios de vários códigos-origem para filtragem de namespace do pacote da interface do usuário do PM: #11026

  • [Bug]: [Acessibilidade] Links difíceis de ler nos resultados da busca da interface do usuário do PM usando o tema claro ou escuro: #11055

  • IVsSolutionRestoreService4 deve estender IVsSolutionRestoreService3: #11098

  • [Bug]: os links de consultoria devem ser alinhados no painel de detalhes da interface do usuário do PM: #11101

  • A dica de ferramenta do ícone de aviso das versões do pacote vulnerável/preterido instalado não está clara: #11103

  • [Capacidade de Resposta] O RestoreOperationLogger+StatusBarProgress.Dispose está bloqueando um thread de pool de threads aguardando thread da IU: #11115

  • Adicione tempo desde a última métrica de restauração: #11124

  • [Bug]: regressão do nuget.exe no tratamento de entradas <files> recursivas entre 5.9.1 e 5.10.0: #11125

  • Aguarde WhenNominated quando um projeto tem uma nomeação pendente: #11132

  • Opção de suporte sourceUri passada no dotnet add package: #11140

  • [Bug]: a interface do usuário do PM do VS não exibe ícones JPEG para pacotes: #11144

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

  • [Bug]: dotnet list package --outdated --interactive faz com que o provedor de credenciais invalide o cache para cada pacote listado: #11169

  • [Bug]: os namespaces de pacote para cenários packages.config estão usando todas as origens como opção de fallback quando nenhum namespace correspondente é encontrado para um pacote: #11170

  • Evite pesquisas MEF no thread da IU durante a inicialização de projetos NuGet: #11176

  • [Bug]: a dica de ferramenta na imagem do indicador de aviso na guia “Instalado” não funciona mais: #11183

  • Todas as chamadas ServiceLocator que recuperam serviços MEF devem evitar o thread da IU. - #11201

  • [Bug]: evento de telemetria ausente no Visual Studio: #11206

  • Evite chamadas EnvDTEProjectUtility.IsSupportedAsync duplicadas: #11207

  • Adicionar IVsSolutionManager.GetSolutionDirectoryAsync: melhore o desempenho e pare de bloquear o thread de chamada em caminhos de código assíncronos. - #11208

  • Renomeie tipos/variáveis no código de produto/teste para refletir o novo nome para o recurso de namespaces de pacote: #11216

  • [Bug]: a compilação ArPow não funciona bem quando em um subdiretório de um repositório git não relacionado: #11227

  • dotnet list package --vulnerable, --deprecated, --outdated não funciona para positivos apenas transitivos: #10767

Lista de todos os problemas corrigidos da versão 6.0

Lista de confirmações na versão 6.0.0

Resumo: novidades na 6.0.1

Apenas o Visual Studio foi atualizado com esta versão do NuGet.

Problemas corrigidos nesta versão

  • [Bug]: não é possível obter INuGetProjectService do agente de serviços no Visual Studio 17: #11367
  • [Bug]: a inicialização do Console do Gerenciador de Pacotes pode causar deadlocks: #11320

Lista de confirmações na versão 6.0.1

Contribuições da comunidade

Agradecemos todos os contribuidores que fizeram com que esse lançamento do NuGet fosse incrível!

Quem PRs Problemas
omajid 3866 Identifique nonce sendo nulo em Rfc3161TimestampTokenInfo: #10484
marcin-krystianc 3934 Como adicionar um cache para LockFileTargetLibrary: #10614
krafs 4151 Valor retornado removido dos documentos em ISettings.AddOrUpdate: #10980
huangqinjin 4148 A correção do PackageSaveMode nuspec sempre reinstala: #2402
Insomniak47 4190 fix(docs): remover link para o caminho fechado/sem saída nas diretrizes de contribuição: #8987
marcin-krystianc #4194 Torne os scripts de desempenho responsáveis por falhas na operação de restauração: #9968
eriawan 4159 Corrige o uso de Surround ($IsPackable) com aspas simples: #11025
huangqinjin 4193 A instalação de packages.config deve respeitar PackageSaveMode: #11018
mfkl 4199 teste: uso do novo DependencyGraphSpec: #11168
omajid 4254 Usar --work-tree com git apply: #11227

Comentários são bem-vindos

Seus comentários são importantes para nós. Se houver algum problema com esta versão, verifique nossos Problemas do GitHub e Visual Studio Developer Community para problemas existentes. Para problemas novos no NuGet, relate um problema no GitHub. Para problemas gerais de experiência do NuGet, informe-nos por meio da opção Relatar um Problema encontrada em seu IDE favorito em Ajude > a Relatar um Problema.