Como criar um pacote NuGet com a CLI do .NET
Observação
Veja a seguir exemplos de linha de comando usando o Unix. O comando dotnet pack
mostrado aqui funciona da mesma maneira no Windows.
Espera-se que as bibliotecas .NET Standard e .NET Core sejam distribuídas como pacotes NuGet. Isso na verdade mostra como todas as bibliotecas .NET Standard são distribuídas e consumidas. Isso é realizado mais facilmente com o comando dotnet pack
.
Imagine que você acabou de criar uma nova biblioteca incrível e deseja distribuí-la no NuGet. Você pode criar um pacote NuGet com várias ferramentas multiplataforma para fazer exatamente isso. O exemplo a seguir assume uma biblioteca chamada SuperAwesomeLibrary tem como alvo netstandard1.0
.
Se você tiver dependências transitivas, ou seja, um projeto que depende de outro pacote, restaure os pacotes para toda a solução com o comando dotnet restore
antes de criar um pacote NuGet. Se não fizer isso, o comando dotnet pack
não funcionará corretamente.
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
.
Depois de verificar se os pacotes foram restaurados, você poderá navegar até o diretório em que uma biblioteca reside:
cd src/SuperAwesomeLibrary
Depois disso, basta apenas um único comando da linha de comando:
dotnet pack
Sua pasta /bin/Debug agora terá a seguinte aparência:
$ ls bin/Debug
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg
Isso produz um pacote capaz de ser depurado. Se você deseja criar um pacote NuGet com binários de versão, tudo que você precisa fazer é adicionar o comutador --configuration
(ou -c
) e usar release
como argumento.
dotnet pack --configuration release
Sua pasta /bin agora terá uma pasta release contendo seu pacote NuGet com os binários da versão:
$ ls bin/release
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg
E agora você tem os arquivos necessários para publicar um pacote NuGet.
Não confunda dotnet pack
com dotnet publish
É importante observar que em nenhum momento o comando dotnet publish
está envolvido. O comando dotnet publish
é usado para implantar aplicativos com todas as suas dependências no mesmo pacote, não para gerar um pacote NuGet para ser distribuído e consumidos por meio do NuGet.