O que é o NuGet? \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 05 Horas 

 50 Min 

 52 Seg 

   Tempo restante da oferta: 05 50 52 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) O que é o NuGet?  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) [ .NET Core ](https://www.treinaweb.com.br/blog/categoria/net-core) 

# O que é o NuGet?

 Um gerenciador de pacote é essencial em qualquer plataforma de desenvolvimento moderna. Para o .NET há o Nuget, o conheça em detalhes neste artigo.

 [ Wladimilson M. Nascimento ](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento) 7 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/03/01154814/NUGET.png)  

O [NuGet](https://github.com/NuGet/Home) é um [gerenciador de dependências](https://www.treinaweb.com.br/blog/o-que-e-gerencia%E2%80%A6-de-dependencias/) para a plataforma .NET. Ele define como os pacotes desta plataforma são criados, publicados e consumidos. Fornecendo ferramentas para cada uma dessas funções.

[  ![ASP.NET Core  - Desenvolvimento de APIs REST](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/aspnet-core.svg)   Curso ASP.NET Core - Desenvolvimento de APIs REST Conhecer o curso ](https://www.treinaweb.com.br/curso/aspnet-core-desenvolvimento-de-apis-rest)

## Estrutura de um pacote NuGet

Caso não esteja familiarizado com desenvolvimento .NET, antes de falar da estrutura de um pacote NuGet, é importante compreender que nesta plataforma podemos criar projetos de biblioteca, ou apenas biblioteca. Este tipo de projeto não pode ser executado diretamente, ele não é um executável. Trata-se de códigos úteis para outros projetos.

Ao ser compilada, uma biblioteca gera um arquivo DLL. Será esta DLL que os outros projetos irão utilizar. O NuGet aproveita desta característica da plataforma para definir seus pacotes.

Na prática, um pacote NuGet é um arquivo compactado com a extensão .nupkg que contém um código compilado (DLL), outros arquivos relacionados a este código (como imagens, etc.) e um arquivo de configuração que contém informações sobre o pacote, como: número de versão, criador, etc.

Estes pacotes .nupkg podem ser publicados em repositórios públicos ou privados, onde os desenvolvedores podem consumi-los, adicionando-os em seus projetos e utilizando no código as funcionalidades que fornecerem.

## Distribuição dos pacotes

Para facilitar a distribuição dos pacotes, o NuGet mantém um repositório público, o [NuGet.org](https://www.nuget.org/), onde qualquer desenvolvedor pode publicar, pesquisar e consumir pacotes. Contendo mais de 100.000 pacotes, este repositório é utilizado por milhões de desenvolvedores .NET/.NET Core todos os dias.

Entretanto, o NuGet também permite a [criação de repositórios privados ou locais](https://www.treinaweb.com.br/blog/criando-repositorios-para-o-nuget/). Assim, um desenvolvedor não precisa publicar em um repositório público um pacote crítico que é utilizado apenas pelos projetos da sua empresa.

Independente do tipo do repositório, ele funciona como a ligação dentre os criadores dos pacotes e os desenvolvedores que os consome. Podemos ilustrar isso com a imagem abaixo:

![](https://dkrn4sk0rn31v.cloudfront.net/2020/03/31152956/nuget-roles.png)

Os criadores publicam os arquivos .nupkg nos repositórios, onde os desenvolvedores podem pesquisá-los e adicioná-los nos projetos .Net.

## Gerenciamento dos pacotes

Da mesma forma que outras plataformas, o .NET está disponível em várias versões, consequentemente, o desenvolvedor que estiver criando um pacote precisa definir para qual versão da plataforma ele será compatível. Um mesmo pacote pode ser compatível com uma versão específica ou várias.

Ao ser consumido, o NuGet irá analisar se o pacote é compatível com a versão do .NET definida no projeto destino. Caso não seja, ele não será adicionado ao projeto. Isso também vale para as dependências deste pacote.

Assim como qualquer projeto, um pacote pode fazer uso de outros pacotes. Mas o desenvolvedor não precisa se preocupar com isso, pois o NuGet irá cuidar de qualquer dependência de nível inferior que houver.

Para compreender melhor este ponto, a imagem abaixo ilustra bem como funciona esta “árvore” de dependência (o NuGet também dá o nome de “grafo de dependência”):

![](https://dkrn4sk0rn31v.cloudfront.net/2020/03/31152955/dependency-graph.png)

Observe que na imagem alguns pacotes se repetem. Quando isso ocorrer, o pacote em questão não será obtido várias vezes. Mesmo que sejam versões diferentes, o NuGet irá verificar qual versão do pacote pode ser compartilhada entre todos que o referenciam e irá obter apenas esta versão.

## Ferramentas e outras características do NuGet

Este gerenciador de pacotes fornece uma ferramenta de linha de comando que permite criar, pesquisar e instalar pacotes. O NuGet CLI pode ser obtido no [NuGet.org](https://www.nuget.org/downloads), entretanto, como o SDK do .NET Core e o Visual Studio (tanto a versão para Windows, quanto a de MacOS) já fornecem suporte a este gerenciador, ele raramente é utilizado.

Outro motivo do pouco uso desta ferramenta de linha de comando é a falta de suporte a projetos do Visual Studio.

Todo projeto .NET possui um arquivo onde serão salvas suas configurações. Por exemplo, um projeto de console simples, definirá um arquivo similar ao abaixo:

```xml

    Exe
    netcoreapp3.1

```

Comumente conhecido como “arquivo de projeto”, ele também é utilizado pelo NuGet registrar os pacotes que estiverem sendo utilizados. Porém, caso um pacote seja instalado com o NuGet CLI, ele não é registrado neste arquivo.

Quando registrado, o pacote é indicado em uma tag `` que contém o nome e a versão utilizada:

```xml

    Exe
    netcoreapp3.0

```

Assim, caso seja utilizada apenas o NuGet CLI, é necessário que esta tag `` seja adicionada manualmente e a ferramenta é utilizada para restaurar os pacotes do projeto.

Por serem utilizados em tempo de compilação e execução, não é necessário que os binários dos pacotes sejam compartilhados junto com o código do projeto. Mas antes de ser compilado na máquina destino, os pacotes precisam ser restaurados.

Utilizando o NuGet CLI, isso é feito com o comando `nuget install`. Já o SDK do .NET e o Visual Studio realiza este procedimento automaticamente quando o projeto for compilado ou executado.

[  ![C# (C Sharp) Avançado](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) Avançado Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-avancado)

## Conclusão

Esta foi uma breve introdução do NuGet. Por ser uma ferramenta integrada a plataforma .NET, muitos não dão o devido valor que este gerenciador de pacotes merece.

Mas como vimos aqui, o trabalho de um gerenciador de pacotes é muito importante e, ao menos o NuGet, não se resume apenas em baixar os arquivos dos pacotes. Para que seja eficiente são realizadas muitas tarefas nos bastidores.

Caso queria conhecer mais sobre esta ferramenta, já abordei a [criação de repositórios](https://www.treinaweb.com.br/blog/criando-repositorios-para-o-nuget/) para ela.

- [ #.NET ](https://www.treinaweb.com.br/blog/tag/dotnet)
- [ #NuGet ](https://www.treinaweb.com.br/blog/tag/nuget)
- [ #.NET Platform ](https://www.treinaweb.com.br/blog/tag/net-platform)

Autor

 ![Wladimilson M. Nascimento](//secure.gravatar.com/avatar/f0dd442f156a3eacd2880e9cd0eafbd1?d=mm)

## Wladimilson M. Nascimento

 Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/03155235/GERENCIADOR-DEPENDÊNCIAS-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     7 anos atrás

    ##  [ O que é gerenciador de dependências? ](https://www.treinaweb.com.br/blog/o-que-e-gerenciador-de-dependencias) 

     Uma ferramenta que facilita a vida do desenvolvedor e o auxilia no gerenciamentos das bibliotecas utilizadas no projeto que estiver trabalhando.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/code-copy-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     10 anos atrás

    ##  [ Criando repositórios para o NuGet ](https://www.treinaweb.com.br/blog/criando-repositorios-para-o-nuget) 

     Veja algumas importantes dicas sobre a criação de repositórios para o NuGet.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/TWELVE-FACTOR-APP-400x280.png)  [ Engenharia de Software ](https://www.treinaweb.com.br/blog/categoria/engenharia-de-software) 

     6 anos atrás

    ##  [ O que são os 12 Factor App? - Parte 1 ](https://www.treinaweb.com.br/blog/o-que-sao-os-12-factor-app-parte-1) 

     Se você trabalha desenvolvendo aplicativos que funcionam como um serviço, conheça os 12 (Twelve) Factor App, uma metodologia que te ajudará a criar aplicações melhores.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/05/14132313/o-que-e-o-asp-net-core-400x280.png)  [ ASP .NET ](https://www.treinaweb.com.br/blog/categoria/asp-net) 

     7 anos atrás

    ##  [ O que é o ASP.NET Core? ](https://www.treinaweb.com.br/blog/o-que-e-o-asp-net-core) 

     Uma evolução do ASP.NET, o ASP.NET Core é uma plataforma leve, rápida e modular, que funciona em conjunto com a plataforma .NET Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/clicando-publicando-lambda-com-net-core-cli-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ Criando e publicando uma função AWS Lambda com o CLI do .NET Core ](https://www.treinaweb.com.br/blog/criando-e-publicando-uma-funcao-aws-lambda-com-o-cli-do-net-core) 

     O .NET Core CLI, que já é uma ferramenta poderosa e com recursos fornecidos pela AWS, também permite criar e gerar funções Lambda.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/09/automatizando-tarefas-de-um-projeto-csharp-com-o-cake-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     9 anos atrás

    ##  [ Automatizando tarefas de um projeto C# com o Cake ](https://www.treinaweb.com.br/blog/automatizando-tarefas-de-um-projeto-csharp-com-o-cake) 

     Veja como o Cake pode auxiliar na automação de tarefas de um projeto .NET Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/como-instalar-o-csharp-e-nosso-primeiro-exemplo-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     4 anos atrás

    ##  [ Guia da linguagem C# ](https://www.treinaweb.com.br/blog/guia-da-linguagem-csharp) 

     Nesse guia de C# você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação C#. Acesse agora mesmo!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2016/10/yarn-um-novo-gerenciador-de-dependencias-para-javascript-400x280.jpg)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     10 anos atrás

    ##  [ Yarn: Um novo gerenciador de dependências para JavaScript ](https://www.treinaweb.com.br/blog/yarn-um-novo-gerenciador-de-dependencias-para-javascript) 

     Yarn nasceu para ser uma opção rápida e segura de se gerenciar dependências em JavaScript.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/03/18140521/AUTOMAPPER-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     7 anos atrás

    ##  [ Utilizando AutoMapper no C# ](https://www.treinaweb.com.br/blog/utilizando-automapper-no-c) 

     Conheça a biblioteca AutoMapper e aprenda como implementá-la em uma aplicação C#.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/05/03175136/NET-CORE-2.1-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     9 anos atrás

    ##  [ Global Tools no .NET Core 2.1 ](https://www.treinaweb.com.br/blog/global-tools-no-net-core-2-1) 

     Conheça o recurso de global tool adicionado na versão 2.1 do .NET Core e aprenda como definir uma a partir de um projeto console.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/06/recursos-de-linha-de-comando-para-o-entity-framework-core-400x280.png)  [ .NET Core ](https://www.treinaweb.com.br/blog/categoria/net-core) 

     10 anos atrás

    ##  [ Recursos de linha de comando para o Entity Framework Core ](https://www.treinaweb.com.br/blog/recursos-de-linha-de-comando-para-o-entity-framework-core) 

     Conheça os recursos de linha de comando para o Entity Framework Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/CACHE-DISTRIBUÍDO-ASP-NET-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ Implementando cache distribuído no ASP.NET Core ](https://www.treinaweb.com.br/blog/implementando-cache-distribuido-no-asp-net-core) 

     Veja como é simples implementar cache distribuído no ASP.NET Core, utilizando o Redis ou o SQL Server.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **05h 50min 52s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
