Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ab Visual Studio 2017 und .NET SDK 1.0.0 wurde die NuGet-Funktionalität PackageReference hinzugefügt.
PackageReference
ermöglicht es Ihnen, Ihre Paketabhängigkeiten direkt in Ihrer Projektdatei zu verwalten.
Wenn Sie den Wiederherstellungsvorgang durchführen, werden die transitiven Abhängigkeiten automatisch aufgelöst, und die entsprechenden Verweise werden für jedes Paket im Projektdiagramm ausgewählt.
In NuGet-Version 5.3 wurde ein Begleitfeature für Projekte im .NET SDK-Stil namens PackageDownload
eingeführt, mit dem Sie das Paket herunterladen können, ohne seine Dateien in das Projekt einzuschließen.
PackageDownload-Spezifikation
„PackageDownload“ ist ein Hilfsprogrammfeature für alle Projekte im .NET SDK-Stil und funktioniert parallel zu PackageReference
.
PackageDownload
-Elemente unterstützen im Vergleich zu PackageReference
unterschiedliche Attribute. Nur die in der folgenden Tabelle aufgeführten Attribute werden unterstützt.
Attribute | Beschreibung | Beispiel |
---|---|---|
Version | Es werden nur genaue Versionen unterstützt, die in [] eingeschlossen sind. Mehrere Versionen können getrennt durch ; angegeben werden. |
[1.0.0] , [1.0.0];[2.0.0] |
Pakete, die über „PackageDownload“ abgerufen werden, durchlaufen denselben Installationsvorgang wie Pakete, die über „PackageReference“ abgerufen wurden. Dies bedeutet, dass Paketsignaturen überprüft werden, und die Paketquellzuordnung wird berücksichtigt. Alle neu erworbenen PackageDownload-Pakete werden im globalen Paketordner installiert.
Funktion | PackageReference | PackageDownload |
---|---|---|
Auswahl von Paketressourcen | Assemblys aus Paketen werden dem Projekt automatisch hinzugefügt und können zur Kompilierung und Laufzeit verwendet werden. | Im Projekt sind keine Ressourcen aus dem Paket enthalten. |
Abhängigkeiten | Automatisch aufgelöst und auf eine einzelne Version vereinfacht | Werden überhaupt nicht berücksichtigt |
pack | In der Paketspezifikation enthalten | Nicht in der Paketspezifikation enthalten |
Transitivität | PackageReference-Elemente werden automatisch an abhängige Projekte weitergegeben. | PackageDownload-Elemente werden von abhängigen Projekten ignoriert. |
Version | Versionsbereiche wie 1.0.0 oder [1.0.0, ) werden unterstützt. Genau eine Version ist zulässig. |
Es werden nur genaue Versionen unterstützt. Es können mehr als nur eine Version heruntergeladen werden. |
dotnet list package | Alle Abhängigkeiten sind enthalten. | PackageDownload-Pakete werden von dotnet list package nicht angezeigt. |
Da PackageDownload-Elemente nicht über den Erwerb hinaus an das Projekt gebunden sind, können mehrere Versionen desselben Pakets heruntergeladen werden.
Einschränkungen für „PackageDownload“
Da es sich um ein erweitertes Feature mit eingeschränkter Anwendbarkeit handelt, verfügt es nicht über eine Toolunterstützung, die „PackageReference“ entspricht.
- Es steht keine VisualStudio- oder dotnet.exe-Funktionalität zum Ändern von PackageDownload-Elementen zur Verfügung. Sie können sie nur manuell in Ihren Projektdateien ändern.
- dotnet-Befehle zum Hinzufügen, Entfernen und Auflisten berücksichtigen PackageDownload-Elemente nicht.
- PackageDownload-Elemente sind nicht Teil der Paketsperrdatei.
PackageDownload-Anwendungen
Die primäre Anwendung von „PackageDownload“ ist das Herunterladen von Paketen, die nicht der herkömmlichen NuGet-Paketstruktur folgen und hauptsächlich Abhängigkeiten zur Buildzeit aufweisen.
Im Idealfall werden alle Ihre Abhängigkeiten über „PackageReference“ ausgedrückt. In Szenarios, in denen dies nicht möglich oder oft noch nicht praktikabel ist, können Sie dieses Feature verwenden, um download
-Pakete einfach an einen bestimmten Speicherort zu packen. Dies erfolgt auf ähnliche Weise wie mit einer packages.config
-Datei, die nicht an ein Projekt gebunden ist.
Beispiel:
<Project Sdk="Microsoft.Build.NoTargets/1.0.80"> <!-- This is not a project we want to build. -->
<PropertyGroup>
<RestorePackagesPath>packages/</RestorePackagesPath> <!-- Changes the global packages folder-->
<MSBuildProjectExtensionsPath>$(RestorePackagesPath)obj/</MSBuildProjectExtensionsPath> <!-- It's still PackageReference, so project intermediates are still created. -->
<TargetFramework>net5.0</TargetFramework> <!-- This is not super relevant, as long as your SDK version supports it. -->
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder> <!-- If a package is resolved to a fallback folder, it may not be downloaded.-->
<AutomaticallyUseReferenceAssemblyPackages>false</AutomaticallyUseReferenceAssemblyPackages> <!-- We don't want to build this project, so we do not need the reference assemblies for the framework we chose.-->
</PropertyGroup>
<ItemGroup>
<PackageDownload Include="MySpecialPackage" version="[6.0.0]" />
</ItemGroup>
</Project>