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
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.
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.
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: #10363O 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: #11025Crie 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: #11125Aguarde 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.