.NET Core kommt mit einer neuen Toolkette für die Softwareentwicklung. Diese Tools werden über die CLI (Command Line Interface) ausgeführt. Standardmäßig haben Sie die Befehlszeilenfunktionen Wiederherstellen, Erstellen usw. Diese Tools sind die primären Tools, auf denen übergeordnete Tools wie integrierte Entwicklungsumgebungen (IDEs), Editoren und Build-Orchestratoren aufbauen können. Der Werkzeugsatz ist auf Projektebene erweiterbar. Das bedeutet, dass Sie Tools im Kontext Ihres Projekts hinzufügen können, indem Sie sie zu Ihrer Projektdatei hinzufügen. Das Tool, das Sie über die CLI ausführen möchten, wird als Verb (dotnet-verb) bezeichnet. Die Ausführung eines Verbs erfolgt über: dotnet verb.
Nicht mehr, es funktioniert auf meinem Rechner!
Nicht alle Tools, die Sie benötigen, sind von Haus aus installiert. Die .NET Core CLI verfügt über ein Erweiterungsmodell, mit dem Sie Ihre eigenen Tools hinzufügen können. Auf Projektebene können Sie mit NuGet verteilte Tools hinzufügen. Fügen Sie die NuGet-Paketkonfiguration zu Ihrer Projektdatei hinzu und führen Sie dotnet restore aus, um das Tool auf Ihr System zu holen. Das Tool wird auf die gleiche Weise installiert, wie die NuGet-Pakete für Ihr Projekt installiert werden. Die Tools sind nun im Rahmen Ihres Projekts verfügbar. Die Tools werden auf allen Rechnern installiert, auf denen das Projekt entwickelt wird. Auf diese Weise haben Sie auf Ihrem Build-Server die gleichen Tools wie auf Ihrer Entwickler-Workstation. Mit dem neuen Modell benötigen Sie keine administrativen Rechte, um Tools für Ihr Projekt zu installieren.
Erstellen Sie eine einfache Erweiterung Um zu zeigen, wie dies funktioniert, habe ich ein Beispiel erstellt, in dem wir dies sehen werden. Das Projekt finden Sie auf github dotnet-allversions.
mit System;
using System.Diagnostics;
using System.Linq;
using System.IO;
mit Microsoft.DotNet.PlatformAbstractions;
Namensraum dotnetallversion
{
Klasse Programm
{
static void Main(string[] args)
{
Console.WriteLine("Installierte .Net-Versionen sind:");
string clipath = Path.GetDirectoryName(new Microsoft.DotNet.Cli.Utils.Muxer().MuxerPath);
DirectoryInfo di = new DirectoryInfo(Path.Combine(clipath, "sdk"));
Console.WriteLine("Aktive Version: " + Microsoft.DotNet.Cli.Utils.Product.Version);
Console.WriteLine();
foreach (var item in di.GetDirectories()){
string versionfile = Path.Combine(item.FullName,".version");
if (IsVersionFilePresent(versionfile))
{
string version = item.Name;
string hash = GetHash(versionfile);
string template = $@"Produktinformation:
Version: {version}
SHA-1-Hash übermitteln: {hash}
";
Console.WriteLine(template);
}
}
Console.WriteLine($@"Laufzeitumgebung:
OS Name: {RuntimeEnvironment.OperatingSystem}
OS Version: {RuntimeEnvironment.OperatingSystemVersion}
OS-Plattform: {RuntimeEnvironment.OperatingSystemPlatform}
RID: {RuntimeEnvironment.GetRuntimeIdentifier()}");
}
static string GetHash(string versionfile)
{
var lines = File.ReadAllLines(versionfile);
return zeilen[0].Substring(0,8);
}
static bool IsVersionFilePresent(string versionfile){
return File.Exists(versionfile);
}
}
}
Um eine .NET CLI-Erweiterung aus dem Programm zu erstellen, müssen Sie ein NuGet-Paket erstellen. Dazu besorgen Sie sich die benötigten Pakete und führen dann den Befehl pack aus:
dotnet wiederherstellen Dotnet-Paket
Nun müssen Sie das NuGet-Paket auf einen NuGet-Server hochladen, damit es in Ihren Projekten verwendet werden kann.
Fügen Sie die Erweiterung zu Ihrem Projekt hinzu Jetzt können Sie das Tool zu Ihrem Projekt hinzufügen, indem Sie die folgende Konfiguration zu Ihrer Projektdatei hinzufügen:
<ItemGroup>
<DotNetCliToolReference Include="dotnet-allversions">
<Version>0.1.1-*</Version>
</DotNetCliToolReference>
</ItemGroup>
Dann laufen Sie:
dotnet wiederherstellen
Dadurch wird das Tool von NuGet heruntergeladen und installiert. Anschließend können Sie das Programm in Ihrem Projektbereich ausführen:
dotnet allversions
Fazit .NET CLI-Erweiterungen sind eine leistungsstarke Möglichkeit, Ihre Befehle innerhalb Ihres Projekts zu erweitern. So können Sie z.B. erzwingen, dass alle Entwickler und Build-Server die gleichen Befehlsversionen verwenden. Wenn Sie NuGet zum Herunterladen verwenden, haben alle Teammitglieder überall Zugriff auf die gleichen Tools.
Verfasst von
Peter Groenewegen
Contact