Press enter to see results or esc to cancel.

Restaurando seus pacotes NuGet automaticamente

No post anterior você viu o que é o NuGet e como usá-lo para instalar bibliotecas no seu projeto. Mas essa não é sua única utilidade.

Você pode pensar: Se eu consigo instalar todos pacotes necessários através de seus comandos, eu preciso mesmo enviar esses pacotes para outros usuários? Ou ainda: eu preciso enviar esses pacotes para o meu servidor de controle de versionamento? A resposta para as duas perguntas é Não, e você não foi o único a pensar nisso, por isso a partir do NuGet 2.0 foi implementada uma função de Restore para facilitar sua vida.

Esse comando tenta restaurar todos os pacotes utilizados pelo seu projeto automaticamente. Isso é muito bem-vindo, já que um projeto MVC 5 recém-criado já começa com 15mb de arquivos NuGet. Você não quer esses arquivos enchendo o seu servidor de versionamento de código, tornando o download inicial do seu projeto mais lento. Este post vai te mostrar como restaurar os pacotes não encontrados do seu projeto.

packages.config

É neste arquivo que o NuGet grava quais pacotes e versões seu projeto usa. No exemplo abaixo vemos um arquivo packages.config de um projeto MVC 5, que é automaticamente criado na raiz do seu projeto:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
  <package id="bootstrap" version="3.0.0" targetFramework="net45" />
  <package id="jQuery" version="1.10.2" targetFramework="net45" />
  <package id="jQuery.Validation" version="1.11.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="3.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.2" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.2" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Modernizr" version="2.6.2" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
  <package id="Respond" version="1.2.0" targetFramework="net45" />
  <package id="WebGrease" version="1.5.2" targetFramework="net45" />
</packages>

Restaurando seus pacotes

Restaurar os pacotes a partir da versão 2.7 do NuGet se tornou muito mais fácil, a seguir você verá como fazer isso das duas principais maneiras.

Restaurando pacotes com o NuGet 2.7+

Quando você abre um projeto com algum package faltando, o Visual Studio automaticamente reconhece os pacotes não encontrados e te oferece a opção de restaurá-los. Esta opção é a mais recomendada por ser a mais fácil e por evitar dor de cabeça em sua equipe.

Assim que clicar em Package Manager Console você verá um alerta informando que existem pacotes faltando:

Botão de Restore

Clique no botão Restore e todo o trabalho difícil será feito. Pronto, seu projeto já pode ser compilado com sucesso.
Caso você não clique em restaurar, assim que você disparar o Build do projeto, o NuGet restaurará os pacotes necessários.

Restaurando pacotes com o NuGet 2.0-2.6

Nestas versões anteriores do NuGet, restaurar os pacotes era um pouco menos automático, porém, ela deve ser sua escolha se você precisa executar o NuGet através de linha de comando, como por exemplo, em servidores de build. Você precisa habilitar explicitamente a restauração e dar permissão para que ela seja feita. Este método é uma integração com o MSBuild utilizado para construir seus projetos e na verdade utiliza internamente o comando nuget install. Felizmente é bem fácil habilitá-lo.

Clique com o botão direito sobre a Solution e escolha Enable NuGet Package Restore

Enable Package Restore

Isso vai criar uma pasta .nuget na raiz de sua Solution com todos arquivos necessários para que a restauração seja feita.

Pasta .nuget

O último passo é dar a permissão necessária para que o NuGet restaure os pacotes. No Visual Studio, vá em Tools > Options, encontre as opções NuGet Package Manager > General e certifique-se que os dois checkboxes estão marcados.

Permissões

Pronto, a partir de agora, toda vez que você disparar um Build em seu projeto, um Restore será iniciado para baixar todos seus pacotes.

Conclusão

Independente da maneira escolhida, agora você pode colocar toda a pasta packages no seu arquivo do .gitignore para que ela não seja versionada. Um novo membro na equipe que pegue o projeto pela primeira vez será capaz de restaurar todos os pacotes automaticamente.

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone
Tags

Comments

Leave a Comment