DNU – .NET Development Utility

Bei DNU handelt es sich um ein Commandline Werkzeug, das hilfreiche Funktionen für die Entwicklung zur Verfügung stellt.

Wie ich bereits zu DNX beschrieben habe, benötigt ein DNX-Projekt eine Datei project.json, welche das Projekt beschreibt und worin auch Abhängigkeiten beschrieben werden.

Neben DNU und DNX gibt es auch noch den .NET Version Manager DNVM.

Mit DNU können nun diese Abhängigkeiten (Pakete) verwaltet werden. Im Hintergrund arbeitet übrigens NuGet.

Um alle möglichen Befehle zu erhalten, muss DNU ohne Parameter oder mit dem Parameter -h ausgeführt werden:

.NET Deployment Utility
.NET Deployment Utility

Sehen wir uns das im Zuge eines Beispielprojektes an.

Für dieses Beispiel wird davon ausgegangen, dass yeoman und der ASP.NET Generator installiert sind (kann hier nachgelesen werden).

Via yo aspnet wird in einem beliebigen Verzeichnis eine ASP.NET application angelegt, nennen wir sie dnutest. Wechseln wir nach der Anlage in das neue Verzeichnis und sehen uns die Datei project.json an, sehen wir folgende Abhängigkeiten:

"dependencies": {
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.Sqlite": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
    "Microsoft.Dnx.Runtime":"1.0.0-rc1-final",
    "Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final"
  }

Damit wir sie verwenden können, müssen die jeweiligen Pakete noch bezogen werden. Hierzu rufen wir in der Commandline (im Verzeichnis in dem auch die project.json zu finden ist) den Befehl dnu restore auf.

Mit einem anschließenden dnu build wird das gesamte Projekt neu erstellt und kann mit dnx web gestartet werden.

Werden nun neue Abhängigkeiten in die project.json eingetragen, ist besagtes dnu restore aufzurufen.

Eine andere Möglichkeit, Abhängigkeiten hinzuzufügen ist die Installation von Paketen aus der Commandline:

dnu install newtonsoft.json

Damit wird Newtonsoft.Json installiert und automatisch der Datei project.json hinzugefügt.

Mit dnu wrap myproj.csproj kann aus der angegebenen Projekt-Datei ein project.json generiert werden und sieht dann so aus:

{
  "version": "1.0.0-*",
  "frameworks": {
    "net45": {
      "wrappedProject": "../../Sample/Sample.Tools.csproj",
      "bin": {
        "assembly": "../../Sample.Tools/obj/{configuration}/Sample.Tools",
        "pdb": "../../Sample.Tools/obj/{configuration}/Sample.Tools"
      }
    }
  }
}

Das kann nun in die ursprüngliche project.json übernommen werden. Der Vorteil: eigene Projekte/Bibliotheken können so eingebunden werden, ohne ein Package dafür generieren und bereitstellen zu müssen.

Für den Umgang mit Packages empfiehlt sich ein Blick auf die Parameter pack, packages und publish.

Veröffentlicht von Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Cookie-Einstellungen
Auf dieser Website werden Cookie verwendet. Diese werden für den Betrieb der Website benötigt oder helfen uns dabei, die Website zu verbessern.
Alle Cookies zulassen
Auswahl speichern
Individuelle Einstellungen
Individuelle Einstellungen
Dies ist eine Übersicht aller Cookies, die auf der Website verwendet werden. Sie haben die Möglichkeit, individuelle Cookie-Einstellungen vorzunehmen. Geben Sie einzelnen Cookies oder ganzen Gruppen Ihre Einwilligung. Essentielle Cookies lassen sich nicht deaktivieren.
Speichern
Abbrechen
Essenziell (1)
Essenzielle Cookies werden für die grundlegende Funktionalität der Website benötigt.
Cookies anzeigen