Verwalten von Abhängigkeiten mit .NET Core SDK 1.0Managing dependencies with .NET Core SDK 1.0

Mit dem Wechsel von .NET Core-Projekten von „project.json“ zu „csproj“ und MSBuild wurde auch ein beträchtlicher Aufwand betrieben, der zu einer Vereinheitlichung der Projektdatei und Objekte geführt hat, sodass Abhängigkeiten nachverfolgt werden können.With the move of .NET Core projects from project.json to csproj and MSBuild, a significant investment also happened that resulted in unification of the project file and assets that allow tracking of dependencies. Bei .NET Core-Projekten ist dies mit der Verwendung von „project.json“ vergleichbar.For .NET Core projects this is similar to what project.json did. Es gibt keine separate JSON- oder XML-Datei, die NuGet-Abhängigkeiten nachverfolgt.There is no separate JSON or XML file that tracks NuGet dependencies. Mit dieser Änderung haben wir auch eine andere Art von Verweis in die CSPROJ-Syntax eingeführt: <PackageReference>.With this change, we've also introduced another type of reference into the csproj syntax called the <PackageReference>.

In diesem Dokument wird der neue Verweistyp beschrieben.This document describes the new reference type. Es wird außerdem gezeigt, wie mit diesem neuen Verweistyp eine Paketabhängigkeit zum Projekt hinzugefügt wird.It also shows how to add a package dependency using this new reference type to your project.

Das neue <PackageReference>-ElementThe new <PackageReference> element

<PackageReference> weist die folgende grundlegende Struktur auf:The <PackageReference> has the following basic structure:

<PackageReference Include="PACKAGE_ID" Version="PACKAGE_VERSION" />

Wenn Sie mit MSBuild vertraut sind, kommt es Ihnen durch bereits vorhandene Verweistypen bekannt vor.If you are familiar with MSBuild, it will look familiar to the other reference types that already exist. Der Schlüssel ist die Include-Anweisung, mit der die Paket-ID angegeben wird, die Sie dem Projekt hinzufügen möchten.The key is the Include statement which specifies the package id that you wish to add to the project. Das untergeordnete <Version>-Element gibt die abzurufende Version an.The <Version> child element specifies the version to get. Die Versionen werden gemäß den NuGet-Versionsregeln angegeben.The versions are specified as per NuGet version rules.

Hinweis

Wenn Ihnen die allgemeine csproj-Syntax noch unbekannt ist, finden Sie weitere Informationen in der Dokumentation zu MSBuild-Projektverweisen.If you are not familiar with the overall csproj syntax, see the MSBuild project reference documentation for more information.

Beim Hinzufügen einer Abhängigkeit, die nur für ein bestimmtes Ziel verfügbar ist, werden Bedingungen wie im folgenden Beispiel verwendet:Adding a dependency that is available only in a specific target is done using conditions like in the following example:

<PackageReference Include="PACKAGE_ID" Version="PACKAGE_VERSION" Condition="'$(TargetFramework)' == 'netcoreapp1.0'" />

Der obige Code bedeutet, dass die Abhängigkeit nur gültig ist, wenn der Build für das angegebene Ziel erstellt wird.The above means that the dependency will only be valid if the build is happening for that given target. $(TargetFramework) in der Bedingung ist eine MSBuild-Eigenschaft, die im Projekt festgelegt wird.The $(TargetFramework) in the condition is a MSBuild property that is being set in the project. Bei den gängigsten .NET Core-Anwendungen ist dies nicht erforderlich.For most common .NET Core applications, you will not need to do this.

Hinzufügen einer Abhängigkeit zu Ihrem ProjektAdding a dependency to your project

Es ist einfach, eine Abhängigkeit zu Ihrem Projekt hinzuzufügen.Adding a dependency to your project is straightforward. Im folgenden Beispiel wird das Hinzufügen der Json.NET-Version 9.0.1 zu Ihrem Projekt veranschaulicht.Here is an example of how to add Json.NET version 9.0.1 to your project. Natürlich gilt dies für alle anderen NuGet-Abhängigkeiten.Of course, it is applicable to any other NuGet dependency.

Wenn Sie Ihre Projektdatei öffnen, sehen Sie zwei oder mehr <ItemGroup>-Knoten.When you open your project file, you will see two or more <ItemGroup> nodes. Sie werden feststellen, dass einer der Knoten bereits <PackageReference>-Elemente aufweist.You will notice that one of the nodes already has <PackageReference> elements in it. Sie können Ihre neue Abhängigkeit zu diesem Knoten hinzufügen oder eine neue erstellen. Sie können frei entscheiden, da das Ergebnis gleich sein wird.You can add your new dependency to this node, or create a new one; it is completely up to you as the result will be the same.

In diesem Beispiel verwenden wir die Standardvorlage, die von dotnet new console abgelegt wird.In this example we will use the default template that is dropped by dotnet new console. Dies ist eine einfache Konsolenanwendung.This is a simple console application. Wenn wir das Projekt öffnen, suchen wir zuerst nach <ItemGroup> mit dem bereits vorhandenen <PackageReference>-Element.When we open up the project, we first find the <ItemGroup> with already existing <PackageReference> in it. Wir fügen dann Folgendes hinzu:We then add the following to it:

<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />

Anschließend speichern wir das Projekt und führen den Befehl dotnet restore aus, um die Abhängigkeit zu installieren.After this, we save the project and run the dotnet restore command to install the dependency.

Hinweis

Starting with .NET Core 2.0, you don't have to run dotnet restore because it's run implicitly by all commands, such as dotnet build and dotnet run, that require a restore to occur. It's still a valid command in certain scenarios where doing an explicit restore makes sense, such as continuous integration builds in Visual Studio Team Services or in build systems that need to explicitly control the time at which the restore occurs.

Das vollständige Projekt sieht folgendermaßen aus:The full project looks like this:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
  </ItemGroup>
</Project>

Entfernen einer Abhängigkeit aus dem ProjektRemoving a dependency from the project

Das Entfernen einer Abhängigkeit aus der Projektdatei bedeutet einfach, <PackageReference> aus der Projektdatei zu entfernen.Removing a dependency from the project file involves simply removing the <PackageReference> from the project file.