Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A partir do Visual Studio 2017 e do .NET SDK 1.0.0, a funcionalidade PackageReference do NuGet foi adicionada.
O PackageReference
permite que você gerencie suas dependências de pacotes diretamente no arquivo de projeto.
Quando você executa a restauração, as dependências transitivas são resolvidas automaticamente e as referências aplicáveis são escolhidas para cada pacote no gráfico do projeto.
No NuGet versão 5.3, um recurso complementar chamado PackageDownload
foi introduzido para projetos estilo SDK do .NET que permite baixar o pacote sem incluir seus arquivos no projeto.
Especificação de PackageDownload
O PackageDownload é um recurso utilitário para todos os projetos estilo SDK do .NET e funciona em conjunto com o PackageReference
.
Os itens PackageDownload
oferecem suporte atributos diferentes em comparação com o PackageReference
. Somente os atributos listados na tabela abaixo são compatíveis.
Atributos | Descrição | Exemplo |
---|---|---|
Versão | Apenas versões exatas, delimitadas por [] , são aceitas. Várias versões podem ser especificadas separadas por ; |
[1.0.0] , [1.0.0];[2.0.0] |
Os pacotes adquiridos via PackageDownload passarão pelo mesmo processo de instalação que os pacotes adquiridos via PackageReference. Isso significa que as assinaturas de pacote são validadas, o mapeamento de origem do pacote é considerado. Todos os pacotes PackageDownload recém-adquiridos serão instalados na pasta de pacotes global.
Recurso | PackageReference | PackageDownload |
---|---|---|
Seleção de ativos de pacotes | Assemblies de pacotes são adicionados automaticamente ao projeto e podem ser usados para compilação e runtime | Nenhum ativo do pacote está incluído no projeto. |
Dependências | Resolvidas automaticamente e niveladas para uma única versão | Não consideradas |
pack | Incluído na especificação do pacote | Não incluído na especificação do pacote. |
Transitividade | Os itens PackageReference são propagados automaticamente para projetos dependentes | Itens de PackageDownload são ignorados por projetos dependentes |
Versão | Intervalos de versão, como 1.0.0 ou [1.0.0, ) , são aceitos. Exatamente 1 versão é permitida. |
Somente versões exatas são aceitas. Mais de 1 versão pode ser baixada. |
dotnet list package | Todas as dependências estão incluídas. | Os pacotes PackageDownload não são mostrados pelo dotnet list package . |
Devido ao fato de que o PackageDownload não está vinculado ao projeto de forma alguma além da aquisição, várias versões do mesmo pacote podem ser baixadas.
Limitações do PackageDownload
Considerando que este é um recurso avançado com aplicabilidade limitada, ele não tem um suporte de ferramentas equivalente ao PackageReference.
- Não há nenhuma funcionalidade do Visual Studio ou dotnet.exe para modificar itens do PackageDownload. Você só pode alterá-los manualmente em seus arquivos de projeto.
- Os comandos add, remove e list do dotnet não levam em consideração itens do PackageDownload.
- Os itens do PackageDownload não fazem parte do arquivo de bloqueio de pacotes.
Aplicações do PackageDownload
A aplicação principal do PackageDownload é baixar pacotes que não seguem a estrutura tradicional de pacotes NuGet e carregam principalmente dependências de tempo de compilação.
Idealmente, todas as suas dependências são expressas através de PackageReference, mas em cenários onde isso não é possível, ou muitas vezes ainda não é prático, você pode usar esse recurso para simplesmente download
pacotes em um determinado local de uma maneira semelhante ao que poderia ser feito por meio de um arquivo packages.config
não vinculado a um projeto.
Exemplo:
<Project Sdk="Microsoft.Build.NoTargets/1.0.80"> <!-- This is not a project we want to build. -->
<PropertyGroup>
<RestorePackagesPath>packages/</RestorePackagesPath> <!-- Changes the global packages folder-->
<MSBuildProjectExtensionsPath>$(RestorePackagesPath)obj/</MSBuildProjectExtensionsPath> <!-- It's still PackageReference, so project intermediates are still created. -->
<TargetFramework>net5.0</TargetFramework> <!-- This is not super relevant, as long as your SDK version supports it. -->
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder> <!-- If a package is resolved to a fallback folder, it may not be downloaded.-->
<AutomaticallyUseReferenceAssemblyPackages>false</AutomaticallyUseReferenceAssemblyPackages> <!-- We don't want to build this project, so we do not need the reference assemblies for the framework we chose.-->
</PropertyGroup>
<ItemGroup>
<PackageDownload Include="MySpecialPackage" version="[6.0.0]" />
</ItemGroup>
</Project>