Aan de slag met Dotnet Script
Voor een programmeur zijn de volgende scenario’s vast herkenbaar:
Voor de ontwikkeling van een applicatie krijg je een groot aantal bestanden aangeleverd die geïmporteerd moeten worden. Dit één voor één met de hand doen kost dagen aan werk.
Of misschien ken je deze wel:
Om een stuk code te kunnen testen moet je een aantal handelingen doen om de te testen code te activeren.
Het zou makkelijk zijn om dit te automatiseren.
Meestal ga je dan aan de slag met bijvoorbeeld PowerShell of een ander scripting taal.
Deze scripting talen zijn wat betreft syntax en werking echter significant anders dan wat je als C#-ontwikkelaar gewend ben.
Sinds .NET Core 2.1 is het ook mogelijk om C# scripts te gebruiken d.m.v. de tool dotnet-script.
Voordelen Dotnet script
Waarom zou je dotnet script gebruiken boven bijvoorbeeld PowerShell? Powershell heeft toch ook ondersteuning voor .NET Framework? Dotnet script heeft drie grote voordelen boven PowerShell.
- Dotnet script is platform onafhankelijk (dan wel door een kleine toevoeging in je script).
- Dotnet script heeft goede ondersteuning voor NuGet (waarover later meer).
- Zoals eerder genoemd: Je hoeft geen nieuwe syntax te leren.
Hoe gebruik je Dotnet script?
Om Dotnet-script te kunnen gebruiken dien je minimaal .NET Core 2.1+ SDK te geïnstalleerd te hebben. Als je ook de C# 8.0 syntax wil gebruiken, dien je ook .NET Core 3.1+ SDK geïnstalleerd te hebben.
Hierna kan Dotnet-Script globaal installeren met het volgende commando:
dotnet tool install -g dotnet-script
Hiermee is het mogelijk om overal het commando dotnet-script te gebruiken. Na de installatie is het bijvoorbeeld mogelijk om inline in de CLI code uit te voeren. Start hiervoor een standaard command prompt en run het commando dotnet-script.
Het is ook mogelijk om gebruikt te maken van script bestanden.
Script bestanden hebben de .csx extensie en kunnen ook direct vanuit de command prompt worden aangeroepen.
dotnet-script helloworld.csx
Scaffolding
Om te beginnen met dotnet-script is het makkelijkste om de scaffolding mogelijkheid te gebruiken. Hiermee wordt er een script bestand aangemaakt, maar ook alle ondersteunde bestanden voor het gebruik in VSCode.
Je kun hiervoor het volgende commando gebruiken.
dotnet-script init
Na de scaffolding is het direct mogelijk om het script bestand in VSCode te open en je code te schrijven.
Zie hieronder een hello world voorbeeld.
Debugging
Vanuit VSCode is het ook mogelijk om je code te debuggen. Hiervoor zet je voor de regel die je wil inspecteren een breakpoint en run je het script in debug modus (F5) zoals je in VSCode gewend bent.
NuGet
Dotnet-script heeft ook ondersteuning voor NuGet packages. Deze kunnen worden toegevoegd d.m.v. de #r syntax.
Daarnaast is het ook mogelijk om gebruik te maken van code uit je applicatie door direct een referentie te maken naar je eigen dll. Hiermee kan je direct gebruik maken van je services uit je eigen applicatie.
Je kunt deze ook met de #r syntax toevoegen zoals hieronder aangegeven:
Script argumenten
Aan ieder script kunnen ook argumenten worden meegegeven. Hierdoor kan je je scripts generieker gebruiken door de argumenten mee te geven bij het uitvoeren van je script.
Een voorbeeld:
Om dit script te kunnen runnen dien je de volgende syntax te gebruiken.
dotnet-script main-arguments.csx -– arg1 arg2
De -- zorgt er voor dat de argumenten die hier achter staan aan het script main-arguments.csx worden meegegeven en geen argument van dotnet-script commando zijn.
Gebruik meerdere bestanden
Als je script complexer wordt, is het mogelijk om je script op te splitsen in meerdere bestanden.
Om een andere script bestand te gebruiken, kun je de #load syntax gebruiken.
Conclusie
Dotnet-script geeft ontwikkelaars de mogelijkheid om laagdrempelig taken te automatiseren bij het ontwikkelen van een applicatie. Hiermee is het makkelijk om in je tools bestaande code vanuit je project of nuget packages te gebruiken.
Wil je meer weten over de mogelijkheden van dotnet-script bekijk dan de documentatie op de github-pagina van dotnet-script.
Ferdi van Til - Software Developer