Gerenciando dependências em projetos .NET com a extensão NuGet
Veja neste artigo como utilizar a ferramenta NuGet a partir do Visual Studio. Essa extensão tem por finalidade principal gerenciar as bibliotecas utilizadas em aplicações .NET.
Como é de conhecimento geral, o .NET Framework dispõe de uma ampla variedade de recursos, com diversas novidades sendo introduzidas a cada novo release. Graças a tais fatos, esta plataforma viabiliza a construção de aplicações sofisticadas voltadas a ambientes bastante heterogêneos (Web, desktop, dispositivos móveis).
No entanto, o desenvolvimento de novos sistemas esbarra, em inúmeras situações, na busca por alternativas que complementem as funcionalidades oferecidas nativamente pelo .NET. Frameworks e bibliotecas open source vêm sendo elaborados por desenvolvedores ao redor do mundo, como resposta às mais variadas necessidades. A própria Microsoft incentiva tais iniciativas, com isso acontecendo através do site CodePlex. Este último nada mais é do que um portal destinado à hospedagem de projetos open source que façam uso de tecnologias como .NET, SQL Server e SharePoint.
Curso relacionado: Curso de NuGet
No caso específico da implementação de aplicações .NET, a utilização de uma biblioteca, pacote ou framework por um projeto no Visual Studio costuma envolver as seguintes ações:
- Inicialmente é feita uma pesquisa à Internet, procurando encontrar uma biblioteca específica ou ainda, localizar alguma solução da qual não se possuía um grande conhecimento até aquele momento;
- Uma vez encontrado o site que disponibiliza os recursos desejados, deve-se escolher a versão mais apropriada ao projeto e, finalmente, efetuar o download desta última;
- Se o arquivo baixado for um wizard, será necessário se proceder com a instalação deste utilitário. Em se tratando de um arquivo num formato como ZIP ou RAR, o conteúdo do mesmo precisará ser descompactado em um local acessível ao projeto;
- Adicionar então referências aos assemblies dos quais a solução considerada fará uso;
- Por fim, é possível ainda que sejam necessários ajustes no arquivo de configurações da aplicação (Web.config ou app.config), por meio do preenchimento de parâmetros requeridos para a correta execução da biblioteca, pacote ou framework que se está consumindo.
O processo aqui descrito, por si só, é relativamente trabalhoso. Em um projeto extenso e que faça uso de diferentes bibliotecas e frameworks, a complexidade de se administrar todas essas dependências será ainda maior. Tudo isto pode ser agravado ao se considerar a necessidade quase certa de atualização destes pacotes num determinado momento (muitas soluções open source costumam lançar novos releases em curtos intervalos de tempo).
Vários profissionais atuando num mesmo projeto podem representar outra fonte de problemas. Caso um mecanismo de controle de versões (como o SVN ou o Team Foundation da Microsoft) não esteja sendo usado, existe o risco de cada desenvolvedor adicionar por conta própria diferentes versões de um mesmo pacote, gerando assim uma série de transtornos no decorrer de atividades rotineiras de implementação.
Procurando sanar todas essas dificuldades, a Microsoft disponibilizaria a partir do Visual Studio 2010 uma ferramenta conhecida como NuGet (Figura 1). Essa extensão tem como meta simplificar a manipulação de bibliotecas utilizadas dentro de uma solução, oferecendo para isto funcionalidades para a pesquisa, instalação ou, mesmo, a atualização de recursos adicionais utilizados por um projeto.
Bibliotecas e frameworks são manipulados através do utilitário NuGet sob a forma de pacotes/packages. Em termos práticos, um pacote é constituído por um conjunto de arquivos agrupados sob a extensão .nupkg, fazendo uso para isto de um padrão chamado Open Packaging Conventions (ou simplesmente “OPC”). Já o formato OPC equivale a um arquivo .zip comum (inclusive o mesmo faz uso deste tipo de compactação), contando ainda com informações de metadata que descrevem a estrutura do pacote em questão.
Além de mecanismos para a busca e instalação de recursos em um projeto .NET, o NuGet também conta com meios para a criação e posterior publicação de pacotes (isto é fundamental para tornar uma solução disponível a desenvolvedores do mundo inteiro). Maiores informações sobre este projeto podem ser obtidas através deste link.
O objetivo deste artigo é descrever como pacotes podem ser adicionados a uma solução .NET via NuGet. Para isto, será criado um projeto de testes dentro do Visual Studio 2012 e adicionado ao mesmo a biblioteca log4net.
Utilizando a extensão NuGet no Visual Studio 2012
Para a demonstração de como se utilizar o NuGet a partir do Visual Studio 2012, estará sendo gerado um projeto do tipo “Windows Forms Application” chamado TesteNuGet (Figura 2).
Com a aplicação criada, a tela de gerenciamento disponibilizada pelo NuGet pode ser acessada das seguintes formas:
- Por meio do menu “TOOLS”, submenu “Library Package Manager” e, por fim, selecionando a opção “Manage NuGet Packages for Solution...”;
- Clicando com o botão direito do mouse sobre a solução na janela Solution Explorer e escolhendo a opção “Manage NuGet Packages for Solution...”;
- Repetindo o mesmo tipo de procedimento do passo anterior, só que desta vez com um clique com o botão direito do mouse sobre o projeto, dentro da janela Solution Explorer; acionar desta vez a opção “Manage NuGet Packages”.
As duas primeiras opções mencionadas permitem o gerenciamento das dependências de todos os projetos contidos em uma solução. Já no terceiro caso, ações deste tipo estarão restritas ao projeto específico que se está selecionando.
Para efeitos de teste, estará sendo utilizada a primeira alternativa citada. Quando o usuário acessar essa funcionalidade por meio do menu “TOOLS” (Figura 3), aparecerá então a tela de gerenciamento do NuGet (Figura 4).
Conforme é possível observar, o NuGet disponibiliza diversos filtros para a pesquisa de pacotes a serem incluídos em aplicações .NET:
- Uma das opções prevê que sejam listadas apenas versões estáveis (“Stable Only”) ou ainda, pré-releases (“Include Prerelease”);
- É possível também ordenar o resultado das pesquisas com base em critérios como pacotes mais baixados (“Most Downloads”), data de publicação (“Published Date”), além da ordem crescente (“Name: Ascending”) ou decrescente (“Name: Descending”) de nome;
- A localização por nome de pacote também está disponível, sendo talvez um dos filtros mais utilizados (já que substitui todo o trabalho de localização de um pacote na Internet).
Digitando o valor “log4net” na caixa de texto que permite a pesquisa de pacotes por nome, serão retornadas todas as soluções relacionadas (conforme pode ser visualizado na Figura 5).
O log4net é um conjunto de recursos publicados pelo projeto Apache, tendo sido criado com a finalidade de simplificar tarefas relativas à geração de registros de log em uma aplicação.
Selecionar então a biblioteca log4net (primeiro item da lista) e clicar na opção “Install”. Será exibida uma tela para a seleção do projeto em que será incluída a referência (Figura 6); certificar-se de que a aplicação TesteNuGet está marcada e acionar o botão “OK”.
Neste momento, aparecerá uma janela indicando que o download/instalação do pacote está em curso (Figura 7).
Uma vez finalizado o processo de download e inclusão do pacote selecionado no projeto, será exibida mais uma vez a tela de gerenciamento do Nuget (Figura 8). É possível notar aqui um ícone verde, indicando que a biblioteca log4net foi adicionada com sucesso ao projeto.
Ao se chegar neste ponto, uma referência à biblioteca log4net terá sido adicionada ao projeto TesteNuGe (Figura 9).
Além da inclusão de novas referências a um projeto, o NuGet realiza outras alterações que podem passar de maneira despercebida para muitos desenvolvedores. Haverá situações em que modificações serão feitas também no arquivo .config da aplicação (mesmo não tendo sido o caso neste exemplo).
Toda vez que o NuGet é executado, um arquivo de nome packages.config é atualizado (se este não existir, acaba por ser gerado automaticamente), de forma a conter referências que possibilitem o gerenciamento dos pacotes utilizados dentro de uma solução.
Na Listagem 1 está o arquivo packages.config criado para aplicação TesteNuGet, sendo que o mesmo já contém uma declaração referenciando a biblioteca log4net.
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="2.0.0" targetFramework="net45" />
</packages>
Uma pasta de nome “packages” também é criada/atualizada durante a execução deste processo, com a mesma estando situada dentro do diretório principal da solução.
Conforme demonstrado na Figura 10, os arquivos para utilização do log4net foram baixados a partir de um repositório na Internet e inseridos dentro em uma pasta dentro do diretório “packages”.
As diversas tarefas executadas por meio da tela de gerenciamento do NuGet podem ser substituídas também por comandos, os quais são acionados a partir de uma funcionalidade conhecida dentro do Visual Studio como Package Manager Console (Figura 11). O acesso a este utilitário é feito a partir do seguinte caminho: menu “TOOLS” > submenu “Library Package Manager” > “Package Manager Console”.
Importante destacar que o Package Manager Console possibilita a localização, instalação, atualização e ainda, remoção de pacotes de uma solução. Maiores informações sobre o mesmo podem ser obtidas através deste link.
Conclusão
A extensão NuGet foi criada com a clara intenção de aumentar a produtividade no desenvolvimento a partir do Visual Studio. Conforme destacado ao longo deste artigo, essa ferramenta contribui para uma economia significativa de tempo no que se refere ao gerenciamento das bibliotecas e frameworks utilizados por projetos .NET.
Espero que o conteúdo aqui apresentado possa ser útil no seu dia-a-dia.
Links Úteis
- Entity Framework: Como monitorar os comandos SQL gerados:
Aprenda neste microexemplo a monitorar as instruções SQL que são executadas pelo Entity Framework quando efetuamos operações de acesso ao banco de dados em nossas aplicações. - ASP.NET Web API e OData: Como criar filtros e ordenação:
Neste microexemplo veremos como utilizar o pacote OData para adicionar funcionalidades de filtro, ordenação, paginação e seleção de campos no ASP.NET Web API. Confira!
Saiba mais sobre NuGet ;)
- NuGet:
Este artigo fala de uma nova extensão do Visual Studio 2010, patrocinada pela Microsoft e pelos desenvolvedores independentes do projeto Nubular (NU), chamada NuGet. - Gerenciador de bibliotecas para a plataforma .NET: NuGet:
O NuGet é um gerenciador de bibliotecas para a plataforma .NET.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo