Lo sviluppo di applicazioni web utilizzano spesso strumenti per la distribuzione del codice. Ad esempio, con node.js è possibile utilizzare il comando npm per installare nuovi componenti sia a livello globale sia a livello di applicazione. Recentemente mi sono imbattuto in dotnet global tools, che consente di creare console application di facile distribuzione e facilmente condivisibili.
Lo strumento utilizzato per pacchettizzare e distribuire i pacchetti è NuGet
Per poter utilizzare i global tools è necessario installare SDK .Net Core 2.1 e creare un applicazione di tipo console application.
Utilizzando gli strumenti a linea di comando di .NET Core è possibile creare una console application :
dotnet new console
A questo punto è necessario modificare il file del progetto aggiungendo due parametri : PackAsTool e ToolCommandName:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<PackAsTool>true</PackAsTool>
<ToolCommandName>NomeDelComando</ToolCommandName>
</PropertyGroup>
</Project>Questi due parametri consentono di :
- PackAsTool: consente di pacchettizare la console application per essere installata come tool
- ToolCommandName: è il nome dell’eseguibile che dovrà essere utilizzato per la console application. Per default è impostato al nome dell’assembly, ma può essere ovviamente personalizzato.
Per la creazione del pacchetto .pkg è necessario utilizzare il comando:
dotnet pack -c Release
Per poter installare il pacchetto appena creato:
dotnet tool install -g MyPackage
Utilizzando l’opzione -g il package è stato installato a livello globale: è quindi possibile utilizzare dalla linea di comando :
> MyPackage
L’eseguibile è stato installato all’interno della cartella .\dotnet\tools presente all’interno della cartella dell’utente corrente.
Pubblicazione del pacchetto tramite NuGet
Per la pubblicazione del pacchetto .pkg è necessario ottenere una API Key dal portale di NuGET utilizzando questo link. A questo punto, utilizzando i comandi:
dotnet pack --configuration Release dotnet nuget push .\bin\release\MyDotNetCoreTool.1.0.0.nupkg --source https://api.nuget.org/v3/index.json --api-key <Your NuGet API key>
il pacchetto verrà pubblicato all’interno del repository di NuGet. Una volta terminata la procedura di pubblicazione sarà possibile scaricare il tool creato, tramite il comando:
dotnet tool install --global MyDotNetCoreTool
Dotnet Global Tools sono sicuramente uno strumento molto utile per poter effettuare la distribuzione di console application tramite il repository di Nuget.