Verweis auf „packages.config“

Die Datei packages.config wird bei einigen Projekttypen für die Verwaltung der Pakete verwendet, auf die vom Projekt verwiesen wird. Auf diese Weise kann NuGet die Projektabhängigkeiten problemlos wiederherstellen, wenn das Projekt ohne all diese Pakete auf ein anderes System, z. B. einen Buildserver, übertragen werden soll.

Wenn packages.config verwendet wird, muss sich in einem Projektstamm befinden. Es wird automatisch erstellt, wenn der erste NuGet-Vorgang ausgeführt wird, kann aber auch manuell erstellt werden, bevor Befehle wie z. B. nuget restoreausgeführt werden.

Projekte, die PackageReference verwenden, nutzen packages.config nicht.

Schema

Das Schema ist einfach: Dem XML-Standardheader folgt ein <packages>-Einzelknoten, der mindestens ein <package>-Element enthält (jeweils eines für jeden Verweis). Jedes <package>-Element kann die folgenden Attribute aufweisen:

Attribut Erforderlich Beschreibung
id Ja Der Bezeichner des Pakets, z.B. „Newtonsoft.json“ oder „Microsoft.AspNet.Mvc“.
version Ja Die genaue Version des zu installierenden Pakets, z.B. 3.1.1 oder 4.2.5.11-beta. Eine Versionszeichenfolge muss mindestens drei Ziffern aufweisen, eine vierte Ziffer und ein Vorabreleasesuffix sind optional. Bereiche sind nicht zulässig.
targetFramework No Der Zielframeworkmoniker (Target Framework Moniker, TFM), der bei der Installation des Pakets angewendet werden soll. Er wird bei der Installation eines Pakets zuerst auf das Projektziel festgelegt. Dadurch können unterschiedliche <package>-Elemente unterschiedliche TFMs aufweisen. Wenn Sie beispielsweise ein Projekt erstellen, das für .NET 4.5.2 erstellt wurde, verwenden an diesem Punkt installierte Pakete den TFM von net452. Wenn Sie das Projekt später dem neuen Ziel .NET 4.6 zuweisen und weitere Pakete hinzufügen, verwenden diese den TFM von net46. Bei einer fehlenden Übereinstimmung zwischen dem Projektziel und den targetFramework-Attributen werden Warnungen generiert. In diesem Fall können Sie die betroffenen Pakete erneut installieren.
allowedVersions No Eine Reihe von zulässigen Versionen für dieses Paket, die während des Paketupdates angewendet werden (siehe Constraints on upgrade versions [Einschränkung von Upgradeversionen]). Dies hat keine Auswirkungen darauf, welches Paket während einer Installation oder Wiederherstellung installiert wird. Die Syntax finden Sie unter Paketversionsverwaltung. Die Benutzeroberfläche von PackageManager deaktiviert auch alle Versionen außerhalb des zulässigen Bereichs.
developmentDependency No Wenn im verwendeten Projekt selbst ein NuGet-Paket erstellt wird, wird durch eine Festlegung des Pakets auf true bei einer Abhängigkeit verhindert, dass das Paket bei der Erstellung des verwendeten Projekts eingeschlossen wird. Der Standardwert ist false.

Beispiele

Die folgende Datei packages.config bezieht sich auf zwei Abhängigkeiten:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="jQuery" version="3.1.1" targetFramework="net46" />
  <package id="NLog" version="4.3.10" targetFramework="net46" />
</packages>

Die folgende Datei packages.config bezieht sich auf neun Pakete, bei der Erstellung des Verbrauchspakets wird Microsoft.Net.Compilers jedoch aufgrund des Attributs developmentDependency nicht eingeschlossen. Durch den Verweis auf die Datei „Newtonsoft.Json“ werden Updates zudem nur auf die Versionen 8.x und 9.x beschränkt.

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net46" />
  <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net46" developmentDependency="true" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
  <package id="Microsoft.Web.Xdt" version="2.1.1" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="8.0.3" allowedVersions="[8,10)" targetFramework="net46" />
  <package id="NuGet.Core" version="2.11.1" targetFramework="net46" />
  <package id="NuGet.Server" version="2.11.2" targetFramework="net46" />
  <package id="RouteMagic" version="1.3" targetFramework="net46" />
  <package id="WebActivatorEx" version="2.1.0" targetFramework="net46" />
</packages>