NuGet
É o gerenciador de pacotes .NET, possibilita a publicação e utilização de bibliotecas, assim como npm, yarn, pip, gem e etc. Por algum tempo o NuGet
foi até mesmo recomendado para frameworks front-end, Bootstrap, Angular, jQuery, entre outros.
Porém em meados de 2015, ficou claro que o foco do NuGet
são pacotes back-ends, tanto que a partir do Visual Studio 2015, houve uma integração com Bower
para gerenciamento dos pacotes front-end, pois o bower
simplesmente gerencia melhor este tipo de dependência.
Packages.config
Ao instalar um pacote informações como o nome, versão e dados de compatibilidade são persistidos no arquivo package.config
, já os binários ou biblioteca são mantidos na pasta packages
para utilização dos projetos a solução. Resumidamente o arquivo packages.config
é bem simples e fácil de entender.
packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.3.10" targetFramework="net46" />
</packages>
Referências em pacote
A partir do Visual Studio 2017 foi introduzida uma nova "feature", onde é possível adicionar uma referência de um pacote diretamente no seu projeto, estas informações são persistidas no .csproj
.
- Arquivo
.csproj
:
<ItemGroup>
<PackageReference Include="Autofac">
<Version>4.6.2</Version>
</PackageReference>
</ItemGroup>
Apesar das referências serem apresentadas como um pacote, fique ciente que as dependências indiretas serão publicadas na bin
, sendo assim, se houverem dependências em comum entre outros pacotes (ex: System.Collections), apenas uma versão será considerada no deploy, claro o NuGet
avisa sobre esta dependência em comum durante a instalação de pacotes.
Qual a vantagem?
Os pacotes por referência deixam sua lista de dependências enxuta, objetiva e direta, as dependências indiretas, ou dependências das dependências, não serão listadas no Nuget
, no meu ponto de vista, torna mais fácil o gerenciamento, já que após a iniciativa .NET Core, é comum encontrar um projeto com diversas referências as bibliotecas System.IO
, System.Collections
entre outras bibliotecas muito utilizadas.
Configuração / Extensões
É possível configurar o padrão ao instalar referência do NuGet
por Packages.config
ou PackageReference
.
Existem extensões do Visual Studio que ajudam a converter para PackageReference
:
Referências
https://docs.microsoft.com/en-us/nuget/schema/packages-config