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:

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
.