O NuGet é um gerenciador de pacotes .Net e é utilizado para compartilhar bibliotecas. Neste contexto, podem surgir necessidades de criar novas bibliotecas, disponibilizadas de maneira privada ou não, de acordo com o cenário de cada desenvolvedor. Com isso, é proposto demonstrar como cria-se os pacotes NuGet e as formas de disponibilização do mesmo.
Criação do projeto
Primeiramente, deve-se abrir o Visual Studio, selecionar a opção ‘Arquivo’, ‘Novo’ e ‘Projeto’.

Será apresentado uma tela com todas as tecnologias oferecidas pelo Visual Studio. Deve-se selecionar a opção .NET Standard e escolher o projeto Class Library.

Com o projeto já criado, tem-se a seguinte estrutura:

Desenvolvimento da biblioteca
Transforma-se a classe Class1.cs em estática e cria-se um novo método para validar; basicamente, uma string, passada como parâmetro, que será o CPF. A classe ficará da seguinte forma:
namespace GeneralValidation { public static class Class1 { public static bool CpfValidate(string cpf) { if (string.IsNullOrEmpty(cpf)) return false; cpf = cpf.Replace("-", string.Empty) .Replace(".", string.Empty); if (cpf.Length != 11) return false; return true; } } }
Nota-se que é muito simples, pois é como programar uma classe em um projeto .Net qualquer. Uma observação que deve ser ressaltada, é que neste tipo de contexto/cenário, o tipo dynamic torna-se instável, podendo apresentar erros durante a compilação. Com isso, deve ser utilizado DTOs (data transfer object).
Criação do pacote
No projeto GeneralValidation, clique com o botão direito e selecione a opção “Propriedades“.

Deve-se ir na seção Pacote e preencher as seguintes informações destacadas:

Após configurar todo o projeto, altere o projeto para Release, clique com o botão direito no projeto e selecione a opção “Pacote“.

Com isso, o Visual Studio irá construir o projeto e será criado um arquivo na pasta \bin\Release do projeto, com extensão .nupkg.


Publicação em nuget.org
Primeiramente deve-se acessar a url https://www.nuget.org/, criar ou acessar uma conta, e em seguida clicar no username e selecionar a opção API Keys.
Cria-se uma nova chave, expandindo a opção Create e onde preenche-se os campos Key Name e Glob Pattern. Por fim, clica-se em Create.

Com o processo de criação da chave já realizado, copia-se a mesma, como é exibido na imagem:

Após copiar a chave, deve-se salvá-la em algum local seguro para que possa ser utilizada em operações futuras.
Abra o prompt de comando do windows e digite o seguinte comando:
dotnet nuget push [NOME DO PACOTE] -k [CHAVE] -s https://api.nuget.org/v3/index.json

Para poder ver o pacote, acesse o username e vá até a opção “Manage Packages“.
Com isso, poderá ser visto como na seguinte imagem:

Publicação local na máquina
Quando é gerado o pacote do projeto e o mesmo se encontra na pasta \bin\release, o mesmo já pode ser utilizado em qualquer outro projeto, bastando realizar a importação.
Publicação privada no VSTS
Antes de tudo, deve-se instalar um plugin no VSTS. Acesse a url: https://marketplace.visualstudio.com/items?itemName=ms.feed e clique em “Obter“.

Esse plugin é gratuito para uma conta que contém até cinco assinaturas. Acima disso deve-se comprar uma assinatura.
Após a instalação, acesse o projeto no VSTS, direcione para a seção Build and Release e selecione a opção Packages.
Clique na opção “New Feed“.
Preencha as informações solicitadas e clique no botão “Create“.
Após criar um feed, inicia-se o processo de publicação, clicando na opção como a imagem:
Primeiramente, baixa-se um arquivo compactado disponibilizado na janela aberta:
Após isso, extraia os arquivos do arquivo compactado, abra o prompt de comando e navegue até a pasta onde estão localizados os arquivos já descompactados. Com isso, executa-se o seguinte comando, lembrando que este comando é gerado automaticamente pelo VSTS, bastando copiar e colar no cmd:
nuget.exe sources Add -Name “NugetTeste” -Source “https://arptecnologia.pkgs.visualstudio.com/_packaging/NugetTeste/nuget/v3/index.json"
Após isso, é necessário copiar o pacote gerado e colar na pasta onde está os arquivos descompactados.
E, por fim, executa-se mais um comando, lembrando que é de acordo com o pacote criado. Após executar o comando, provavelmente deverá pedir as credenciais referente ao VSTS.
nuget.exe push -Source “NugetTeste” -ApiKey VSTS GeneralValidation.1.0.0.nupkg
Com isso, pode-se ver o pacote já no VSTS, como exibido na imagem:
Importando pacotes NuGet de terceiros no Visual Studio
Diante dos pacotes privados e/ou de terceiros existentes, surge a necessidade de utilizá-los em algum projeto pessoal. Para isso, siga os seguintes passos:
Selecione Ferramentas, NuGet Package Manager e Package Manager Settings.
- Selecione a opção Package Sources e clique na opção de adicionar um novo pacote.
- Dê um nome a este novo pacote e informe o caminho onde estará este pacote. No caso demonstrado, pode-se informar o caminho da pasta que está o arquivo .nupkg ou a url no VSTS referente ao pacote.
Ao informar o caminho local, ficará da seguinte maneira:
Informe a url do VSTS. Primeiramente deve acessar o pacote que está no VSTS e selecionar a opção Connect to feed.
Será exibida uma janela contendo as informações para conexão com o pacote. Copie a url do pacote, como demonstrado:
Com isso, basta informar esta url ao importar o pacote, ficando da seguinte maneira:
Enfim, terá todos estes pacotes disponíveis ao acessar o Manage NuGet Packages:
Onde, ao selecionar algum, serão exibidos os plugins referentes ao pacote:
Conclusão
Nota-se que isso pode se tornar útil para uma equipe de desenvolvimento, pois é possível encapsular funcionalidades, utilizadas em comum, e distribuí-las de maneira abstrata e fácil. Um exemplo disso seria uma criptografia personalizada de utilização de uma determinada empresa, onde, ao invés de todos os desenvolvedores terem que conhecer o código e copiar e colar o mesmo, basta adicionar uma referência do plugin no projeto via nuget.
Contribuições
Referências
- https://docs.microsoft.com/en-us/vsts/package/get-started-nuget?view=vsts
- https://www.tshooter.com.br/2016/03/02/aprenda-a-criar-seu-primeiro-pacote-nuget/
- https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-visual-studio
- https://www.nuget.org/
- https://docs.microsoft.com/en-us/nuget/what-is-nuget