dotnet add package
Este artigo se aplica a: ✔️ SDK do .NET Core 3.1 e versões posteriores
Nome
dotnet add package
- Adiciona ou atualiza uma referência de pacote em um arquivo de projeto.
Sinopse
dotnet add [<PROJECT>] package <PACKAGE_NAME>
[-f|--framework <FRAMEWORK>] [--interactive]
[-n|--no-restore] [--package-directory <PACKAGE_DIRECTORY>]
[--prerelease] [-s|--source <SOURCE>] [-v|--version <VERSION>]
dotnet add package -h|--help
Descrição
O comando dotnet add package
fornece uma opção conveniente para adicionar ou atualizar uma referência de pacote a um arquivo de projeto. Ao executar o comando, há uma verificação de compatibilidade para garantir que o pacote seja compatível com as estruturas do projeto. Se a verificação for aprovada e o pacote não for referenciado no arquivo de projeto, um elemento <PackageReference>
será adicionado ao arquivo de projeto. Se a verificação for aprovada e o pacote não for referenciado no arquivo de projeto, um elemento <PackageReference>
será adicionado ao arquivo de projeto. Depois que o arquivo de projeto é atualizado, o dotnet restore é executado.
Por exemplo, adicionar Microsoft.EntityFrameworkCore
a ToDo.csproj produz uma saída semelhante ao exemplo a seguir:
Determining projects to restore...
Writing C:\Users\username\AppData\Local\Temp\tmp24A8.tmp
info : Adding PackageReference for package 'Microsoft.EntityFrameworkCore' into project 'C:\ToDo\ToDo.csproj'.
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/index.json
info : GET https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/0.0.1-alpha/3.1.3.json
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/3.1.4/7.0.0-preview.2.22153.1.json
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/7.0.0-preview.3.22175.1/7.0.0-preview.3.22175.1.json
info : NotFound https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json 257ms
info : Restoring packages for C:\ToDo\ToDo.csproj...
info : Package 'Microsoft.EntityFrameworkCore' is compatible with all the specified frameworks in project 'C:\ToDo\ToDo.csproj'.
info : PackageReference for package 'Microsoft.EntityFrameworkCore' version '6.0.4' added to file 'C:\ToDo\ToDo.csproj'.
info : Writing assets file to disk. Path: C:\ToDo\obj\project.assets.json
log : Restored C:\ToDo\ToDo.csproj (in 171 ms).
O arquivo ToDo.csproj agora contém um elemento <PackageReference>
para o pacote referenciado.
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
Se o projeto estiver integrado ao Gerenciamento Central de Pacotes (CPM), o <PackageVersion>
elemento no Directory.Packages.props file
será adicionado/atualizado e o <PackageReference>
elemento será adicionado ao arquivo de projeto.
Atualmente, há suporte para os seguintes cenários. Esses exemplos pressupõem que a versão mais recente do Microsoft.EntityFrameworkCore
seja 6.0.4. Cenários adicionais relacionados ao CPM estão documentados nesta especificação de design.
Cenário 1: <PackageReference>
não existe no arquivo de projeto, <PackageVersion>
o Directory.Packages.props file
elemento não existe no , e o argumento version não é passado da linha de comando.
Comando CLI que é executado: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore
O <PackageVersion>
elemento é adicionado ao Directory.Packages.props file
.
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
O <PackageReference>
elemento é adicionado ao arquivo de projeto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Cenário 2: <PackageReference>
não existe no arquivo de projeto, <PackageVersion>
o Directory.Packages.props file
elemento não existe no , e o argumento version é passado da linha de comando.
Comando CLI que é executado: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
O <PackageVersion>
elemento é adicionado ao Directory.Packages.props file
.
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
O <PackageReference>
elemento é adicionado ao arquivo de projeto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Cenário 3: <PackageReference>
não existe no arquivo de projeto, <PackageVersion>
o Directory.Packages.props file
elemento existe no , e o argumento version não é passado da linha de comando.
Comando CLI que é executado: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore
O <PackageVersion>
elemento é adicionado ao Directory.Packages.props file
.
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
O <PackageReference>
elemento é adicionado ao arquivo de projeto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Cenário 4: <PackageReference>
não existe no arquivo de projeto, <PackageVersion>
o Directory.Packages.props file
elemento existe no , e o argumento version é passado da linha de comando.
Comando CLI que é executado: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
O <PackageVersion>
elemento é adicionado ao Directory.Packages.props file
.
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
O <PackageReference>
elemento é adicionado ao arquivo de projeto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Restauração implícita
Não é necessário executar dotnet restore
, pois ele é executado implicitamente por todos os comandos que exigem uma restauração, como dotnet new
, dotnet build
, dotnet run
, dotnet test
, dotnet publish
e dotnet pack
. Para desabilitar a restauração implícita, use a opção --no-restore
.
O comando dotnet restore
ainda é útil em determinados cenários em que realizar uma restauração explícita faz sentido, como compilações de integração contínua no Azure DevOps Services ou em sistemas de compilação que precisam controlar explicitamente quando a restauração ocorrerá.
Para obter informações sobre como gerenciar feeds do NuGet, confira a documentação do dotnet restore
.
Argumentos
PROJECT
Especifica o arquivo do projeto. Se não for especificado, o comando pesquisará um no diretório atual.
PACKAGE_NAME
A referência de pacote a ser adicionada.
Opções
-f|--framework <FRAMEWORK>
Adiciona uma referência de pacote somente quando há uma estrutura específica como destino.
-?|-h|--help
Imprime uma descrição de como usar o comando.
--interactive
Permite que o comando pare e aguarde entrada ou ação do usuário. Por exemplo, para concluir a autenticação.
-n|--no-restore
Adiciona uma referência de pacote sem executar a visualização de restauração e a verificação de compatibilidade.
--package-directory <PACKAGE_DIRECTORY>
O diretório no qual restaurar os pacotes. O local de restauração de pacote padrão é
%userprofile%\.nuget\packages
no Windows e~/.nuget/packages
no macOS e Linux. Para obter mais informações, consulte Como gerenciar as pastas de pacotes globais, de cache e temporárias no NuGet.--prerelease
Permite a instalação de pacotes de pré-lançamento. Disponível desde o SDK do .NET Core 5
-s|--source <SOURCE>
A URI da origem do pacote NuGet a ser usada durante a operação de restauração.
-v|--version <VERSION>
Versão do pacote. Consulte Controle de versão do pacote NuGet.
Exemplos
Adicionar um pacote NuGet
Microsoft.EntityFrameworkCore
a um projeto:dotnet add package Microsoft.EntityFrameworkCore
Adicionar uma versão específica de um pacote a um projeto:
dotnet add ToDo.csproj package Microsoft.Azure.DocumentDB.Core -v 1.0.0
Adicionar um pacote usando uma fonte específica do NuGet:
dotnet add package Microsoft.AspNetCore.StaticFiles -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json