Adicionar pacotes ao projeto .NET
O .NET inclui muitas bibliotecas principais que processam qualquer conteúdo, desde a gestão de ficheiros e HTTP até à compressão de ficheiros. Existe também um enorme ecossistema de bibliotecas de terceiros. Pode utilizar o NuGet, o gestor de pacotes do .NET, para instalar essas bibliotecas e utilizá-las na sua aplicação.
O .NET e o respetivo ecossistema utilizam muito a palavra dependência. Uma dependência é uma biblioteca de terceiros. É um pedaço de código reutilizável que realiza algo e que você pode adicionar ao seu aplicativo. A biblioteca de terceiros é algo de que a sua aplicação depende para funcionar, daí a palavra dependência.
Você pode pensar na biblioteca de terceiros como um pacote armazenado em um repositório. Um pacote consiste numa ou mais bibliotecas que pode adicionar a uma aplicação para tirar partido das respetivas funcionalidades.
Aqui, nos concentramos nas dependências do pacote. No entanto, um projeto .NET pode ter outros tipos de dependências além das dependências do pacote. Incluindo estruturas, analisadores, referências de projeto e dependências de projeto compartilhadas.
Determinar se necessita de um pacote
Como pode saber se precisa de um pacote para o seu projeto? É uma questão complicada que envolve alguns fatores:
- Obter um código melhor: pergunte a si mesmo se você está lidando com uma tarefa como segurança, por exemplo, e está tentando implementar autenticação e autorização. É uma tarefa na qual tem de acertar para proteger os seus dados e os dados dos clientes. Existem padrões e bibliotecas utilizadas por muitos programadores. Essas bibliotecas implementam recursos que você provavelmente sempre precisa, e os problemas são corrigidos à medida que surgem. Deve utilizar essas bibliotecas em vez de criar as suas próprias. Não é provável que você mesmo escreva o código, porque há muitos casos de borda que você precisa considerar.
- Economia de tempo: você provavelmente pode criar a maioria das coisas por conta própria, como bibliotecas de componentes de utilitários ou interface do usuário, mas leva tempo. Mesmo que seus resultados sejam comparáveis ao que está disponível, não é um bom uso do seu tempo para replicar o trabalho.
- Manutenção: Todas as bibliotecas e aplicativos precisam de manutenção mais cedo ou mais tarde. A manutenção implica a adição de novas funcionalidades e a correção de erros. É um bom uso do seu tempo ou do tempo da sua equipe para manter uma biblioteca, ou é melhor deixar uma equipe de software de código aberto lidar com isso?
Avaliar um pacote
Antes de instalar uma biblioteca, convém inspecionar as dependências nas quais ela se baseia. Estas dependências podem incentivá-lo ou dissuadi-lo de utilizar o pacote. Eis alguns fatores a considerar ao selecionar uma dependência para o seu projeto:
- Tamanho: o número de dependências pode criar uma grande pegada. Se estiver numa largura de banda limitada ou tiver outras limitações de hardware, este fator pode ser uma preocupação.
- Licenciamento: Você precisa garantir que a licença concedida para a biblioteca cubra o uso pretendido, seja ele comercial, pessoal ou acadêmico.
- Manutenção ativa: pode ser um problema se o pacote depender de uma dependência que não é mantida ativamente. A dependência pode ser preterida ou não atualizada por muito tempo.
Pode saber mais sobre um pacote antes de o instalar ao aceder a https://www.nuget.org/packages/<package name>
. Este URL leva-o a uma página detalhada do pacote. Selecione a lista suspensa Dependências para ver em quais pacotes ele depende para funcionar.
O número de dependências listadas pode não corresponder totalmente à verdade. Se transferir um pacote, poderá obter uma dependência com dezenas de pacotes. Porquê? Cada pacote tem uma lista de dependências. Para garantir que pode utilizar um pacote, todas as dependências são pesquisadas e transferidas quando executa o comando dotnet add package <package name>
.
Instalar um pacote
Existem várias formas de instalar pacotes. Existe uma linha de comandos e uma interface gráfica do utilizador incorporada para um gestor de pacotes no Visual Studio e no Visual Studio para Mac. Você pode adicionar manualmente referências de pacote ao seu arquivo de projeto ou instalá-las por meio de uma ferramenta de interface de linha de comando (CLI), como o Paket ou a CLI do .NET Core.
Para este módulo, usamos a CLI interna do .NET Core para instalar pacotes. Pode adicionar um pacote ao projeto .NET ao invocar o comando no terminal. Um comando de instalação típico tem esta aparência: dotnet add package <name of package>
. Ao executar o comando add package
, a ferramenta de linha de comandos estabelece ligação a um registo global, obtém o pacote e armazena-o numa localização de pastas em cache utilizável para todos os projetos.
Depois que o projeto é instalado e compilado, as referências são adicionadas às pastas de depuração ou versão. O diretório do projeto tem a seguinte aparência:
-| bin/
---| Debug/
------| net3.1
--------| <files included in the dependency>
Localizar um pacote
Os programadores podem utilizar o registo global em NuGet.org para localizar e transferir os pacotes necessários para as respetivas aplicações. Uma empresa pode ter uma estratégia em vigor para os pacotes que podem ser utilizados e onde localizá-los.
Os pacotes podem estar em vários locais diferentes. Algumas dessas fontes podem estar disponíveis publicamente e outras podem ser restritas e disponíveis apenas para funcionários de uma empresa específica. Eis alguns locais nos quais os pacotes podem residir:
- Registros: um exemplo pode ser um registro global, como o registro NuGet.org. Pode alojar os seus próprios registos, que podem ser privados ou públicos. Serviços como o GitHub e o Azure DevOps disponibilizam os registos privados.
- Ficheiros: Pode instalar um pacote a partir de uma pasta local. A instalação a partir de um pacote é comum quando você está tentando desenvolver suas próprias bibliotecas .NET e deseja testar o pacote localmente. Ou, por algum motivo, você não deseja usar um registro.
Registo do NuGet e a ferramenta .NET
Quando você executa dotnet add package <name of dependency>
o , o .NET vai para um registro global chamado registro NuGet.org localizado em https://nuget.org e procura o código para download. Você também pode navegar por pacotes nesta página se visitá-la usando um navegador. Cada pacote tem um site dedicado para o qual você pode ir.
Nestes sites, pode saber mais sobre onde reside o código fonte. Você também pode encontrar informações como métricas sobre downloads e informações sobre manutenção.
Comandos do .NET
Até agora, você aprendeu como pode instalar dependências usando a CLI do .NET Core. Contudo, esta ferramenta pode fazer muito mais.
A CLI de .NET Core tem bastantes comandos. Os comandos ajudam em tarefas como a instalação e criação de pacotes e a inicialização de projetos .NET. Não precisa de saber todos os comandos detalhadamente. Quando começar a utilizar o .NET, é provável que utilize apenas um subconjunto dos comandos. À medida que você expande seu uso do .NET, você pode usar mais comandos de várias categorias.
Para o ajudar a recordar-se das ações dos comandos, é útil pensar nestes como pertencendo a categorias:
- Gerenciar dependências: os comandos nesta categoria abrangem instalação, remoção, limpeza após instalações de pacotes e atualizações de pacotes.
- Executar programas: A ferramenta .NET Core pode ajudá-lo a gerenciar fluxos no desenvolvimento de aplicativos. Alguns exemplos de fluxos de aplicações são testes de execução, código de compilação e comandos de migração de execução para atualizar projetos.
- Criar e publicar pacotes: Vários comandos podem ajudá-lo com tarefas como criar um pacote compactado e enviar o pacote para um registro.
Se quiser obter uma lista detalhada de todos os comandos, introduza dotnet --help
no terminal.
Como instalar um pacote
Use o dotnet add package <dependency name>
comando para instalar uma dependência normal que deve ser usada como parte do seu aplicativo.
Nota
Pode instalar alguns pacotes a nível global. Esses pacotes não devem ser importados para o seu projeto. Por este motivo, muitos pacotes globais são modelos ou ferramentas CLI. Também pode instalar estas ferramentas globais a partir de um repositório de pacotes. Instale ferramentas com o comando dotnet tool install <name of package>
. Instale modelos com o comando dotnet new -i <name of package>
.
Após a instalação
Os pacotes instalados estão listados na dependencies
seção do seu .csproj
arquivo. Se quiser ver quais os pacotes que estão na pasta, pode introduzir dotnet list package
.
Project 'DotNetDependencies' has the following package references
[net8.0]:
Top-level Package Requested Resolved
> Humanizer 2.7.9 2.7.9
Este comando lista apenas os pacotes de nível superior, e não as dependências desses pacotes que chamamos de pacotes transitivos. Este comando é bom para uma olhada rápida. Se quiser uma vista mais aprofundada, pode indicar todos os pacotes transitivos. Quando você fizer isso, o list
comando terá esta aparência:
dotnet list package --include-transitive
A inclusão de transitivos permite que você veja dependências junto com todos os pacotes instalados. Se você executar dotnet list package --include-transitive
o , poderá obter esta saída:
Project 'DotNetDependencies' has the following package references
[net8.0]:
Top-level Package Requested Resolved
> Humanizer 2.7.9 2.7.9
Transitive Package Resolved
> Humanizer.Core 2.7.9
> Humanizer.Core.af 2.7.9
> Humanizer.Core.ar 2.7.9
> Humanizer.Core.bg 2.7.9
> Humanizer.Core.bn-BD 2.7.9
> Humanizer.Core.cs 2.7.9
...
Restaurar dependências
Quando você cria ou clona um projeto, as dependências incluídas não são baixadas ou instaladas até que você crie seu projeto. Você pode restaurar manualmente dependências e ferramentas específicas do projeto especificadas no arquivo de projeto, executando o dotnet restore
comando. Na maioria dos casos, não tem de utilizar explicitamente o comando. A restauração do NuGet é executada implicitamente, se necessário, quando você executa comandos como new
, build
e run
.
Limpar dependências
Mais tarde ou mais cedo, vai-se aperceber de que já não precisa de um pacote Ou, você pode perceber que o pacote que você instalou não é o que você precisa. Talvez você tenha encontrado um que realize melhor uma tarefa. Qualquer que seja a razão, deve remover as dependências que não está a utilizar, de modo a manter tudo organizado. Além disso, as dependências ocupam espaço.
Para remover um pacote do seu projeto, use o remove
comando, assim: dotnet remove package <name of dependency>
. Este comando remove o pacote do arquivo do seu projeto .csproj
.