Neuinstallieren und Aktualisieren von PaketenHow to reinstall and update packages

Es gibt einige Situationen, die nachfolgend unter Wann ein Paket neu installiert wird beschrieben werden, in denen Verweise auf ein Paket innerhalb eines Visual Studio-Projekts fehlerhaft werden können.There are a number of situations, described below under When to Reinstall a Package, where references to a package might get broken within a Visual Studio project. In diesen Fällen werden diese Verweise durch das Löschen und die Neuinstallation der gleichen Paketversion ordnungsgemäß wiederhergestellt.In these cases, uninstalling and then reinstalling the same version of the package will restore those references to working order. Ein Paket zu aktualisieren bedeutet einfach, eine aktualisierte Version zu installieren. So lässt sich ein Paket häufig ordnungsgemäß wiederherstellen.Updating a package simply means installing an updated version, which often restores a package to working order.

Das Aktualisieren und die Neuinstallation von Paketen erfolgt wie im Folgenden dargestellt:Updating and reinstalling packages is accomplished as follows:

MethodeMethod UpdateUpdate NeuinstallationReinstall
Paket-Manager-Konsole (beschrieben unter Verwenden des Updatepakets)Package Manager console (described in Using Update-Package) Update-Package-BefehlUpdate-Package command Update-Package -reinstall-BefehlUpdate-Package -reinstall command
Benutzeroberfläche des Paket-ManagersPackage Manager UI Wählen Sie auf der Registerkarte Updates mindestens ein Paket aus, und klicken Sie auf Update (Aktualisieren).On the Updates tab, select one or more packages and select Update Wählen Sie auf der Registerkarte Installiert ein Paket aus, dokumentieren Sie dessen Namen, und klicken Sie dann auf Deinstallieren.On the Installed tab, select a package, record its name, then select Uninstall. Wechseln Sie zur Registerkarte Durchsuchen, suchen Sie nach dem Paketnamen, wählen Sie ihn aus, und klicken Sie dann auf Installieren.Switch to the Browse tab, search for the package name, select it, then select Install).
nuget.exe-CLInuget.exe CLI nuget update-Befehlnuget update command Löschen Sie für alle Pakete den Paketordner, und führen Sie dann nuget install aus.For all packages, delete the package folder, then run nuget install. Löschen Sie für ein einzelnes Paket den Paketordner, und verwenden Sie nuget install <id>, um den gleichen Ordner neu zu installieren.For a single package, delete the package folder and use nuget install <id> to reinstall the same one.

In diesem Artikel:In this article:

Wann ein Paket neu installiert werden sollteWhen to Reinstall a Package

  1. Fehlerhafte Verweise nach der Paketwiederherstellung: Wenn Sie ein Projekt geöffnet und NuGet-Pakete wiederhergestellt haben, jedoch noch immer fehlerhafte Verweise angezeigt werden, versuchen Sie, jedes einzelne Paket wiederherzustellen.Broken references after package restore: If you've opened a project and restored NuGet packages, but still see broken references, try reinstalling each of those packages.
  2. Projekt ist aufgrund gelöschter Dateien fehlerhaft: NuGet hält Sie nicht davon ab, Elemente zu löschen, die aus Paketen hinzugefügt wurden. Es ist also einfach, versehentlich die aus einem Paket installierten Inhalte zu verändern und Ihr Projekt so zu zerstören.Project is broken due to deleted files: NuGet does not prevent you from removing items added from packages, so it's easy to inadvertently modify contents installed from a package and break your project. Installieren Sie die betroffenen Pakete erneut, um das Projekt wiederherzustellen.To restore the project, reinstall the affected packages.
  3. Das Paketupdate hat zu einem Fehler im Projekt geführt: Wenn ein Update für ein Paket einen Fehler in einem Projekt verursacht, wurde dieser in der Regel von einem Abhängigkeitspaket ausgelöst, das möglicherweise auch aktualisiert wurde.Package update broke the project: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been updated. Installieren Sie das spezifische Paket neu, um den Zustand der Abhängigkeit wiederherzustellen.To restore the state of the dependency, reinstall that specific package.
  4. Erneutes Zuweisen oder Upgrade eines Projekts: Dies kann hilfreich sein, wenn ein Projekt erneut zugewiesen oder ein Upgrade für dieses durchgeführt wurde, und wenn das Paket eine Neuinstallation aufgrund der Änderung im Zielframework erfordert.Project retargeting or upgrade: This can be useful when a project has been retargeted or upgraded and if the package requires reinstallation due to the change in target framework. NuGet zeigt in solchen Fällen sofort nach der Projektneuzuweisung einen Buildfehler an, und in nachfolgenden Buildwarnungen wird Ihnen mitgeteilt, dass das Paket möglicherweise neu installiert werden muss.NuGet shows a build error in such cases immediately after project retargeting, and subsequent build warnings let you know that the package may need to be reinstalled. Für das Projektupgrade zeigt NuGet einen Fehler im Projektupgradeprotokoll an.For project upgrade, NuGet shows an error in the Project Upgrade Log.
  5. Neuinstallation eines Pakets während der Entwicklung: Paketautoren müssen oft dieselbe Version des Pakets neu installieren, das Sie entwickeln, um das Verhalten zu testen.Reinstalling a package during its development: Package authors often need to reinstall the same version of package they're developing to test the behavior. Der Install-Package-Befehl bietet keine Option zum Erzwingen einer Neuinstallation an. Verwenden Sie deshalb stattdessen Update-Package -reinstall.The Install-Package command does not provide an option to force a reinstall, so use Update-Package -reinstall instead.

Einschränken von UpdateversionenConstraining upgrade versions

Standardmäßig wird durch die Neuinstallation oder das Update eines Pakets immer die neueste verfügbare Version aus der Paketquelle installiert.By default, reinstalling or updating a package always installs the latest version available from the package source.

In Projekten, die das packages.config-Verwaltungsformat verwenden, können Sie jedoch den Versionsbereich explizit einschränken.In projects using the packages.config management format, however, you can specifically constrain the version range. Wenn Sie z.B. wissen, dass Ihre Anwendung nur mit Version 1.x eines Pakets funktioniert, jedoch nicht mit 2.0 oder höher (vielleicht aufgrund einer größeren Änderung in der Paket-API), sollten Sie die Upgrades auf 1.x-Versionen beschränken.For example, if you know that your application works only with version 1.x of a package but not 2.0 and above, perhaps due to a major change in the package API, then you'd want to constrain upgrades to 1.x versions. Dadurch werden versehentliche Updates verhindert, die die Anwendung zerstören würden.This prevents accidental updates that would break the application.

Um eine Einschränkung festzulegen, öffnen Sie packages.config in einem Text-Editor, suchen Sie nach der betreffenden Abhängigkeit, und fügen Sie das Attribut allowedVersions mit einem Versionsbereich hinzu.To set a constraint, open packages.config in a text editor, locate the dependency in question, and add the allowedVersions attribute with a version range. Wenn Sie z.B. Updates auf Version 1.x beschränken möchten, legen Sie allowedVersions auf [1,2) fest:For example, to constrain updates to version 1.x, set allowedVersions to [1,2):

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="ExamplePackage" version="1.1.0" allowedVersions="[1,2)" />

    <!-- ... -->
</packages>

Verwenden Sie in jedem Fall die unter Paketversionsverwaltung beschriebene Notation.In all cases, use the notation described in Package versioning.

Verwenden eines UpdatepaketsUsing Update-Package

Unter Berücksichtigung der nachfolgend beschriebenen Überlegungen können Sie einfach beliebige Paket neu installieren, indem Sie den Befehl „Updatepaket“ in der Paket-Manager-Konsole von Visual Studio verwenden (Extras > NuGet-Paket-Manager > Paket-Manager-Konsole):Being mindful of the Considerations described below, you can easily reinstall any package using the Update-Package command in the Visual Studio Package Manager Console (Tools > NuGet Package Manager > Package Manager Console):

Update-Package -Id <package_name> –reinstall

Die Verwendung dieses Befehls ist viel einfacher als das Entfernen eines Pakets und der anschließende Versuch, dasselbe Paket im NuGet-Katalog mit der gleichen Version zu finden.Using this command is much easier than removing a package and then trying to locate the same package in the NuGet gallery with the same version. Beachten Sie, dass der -Id-Schalter optional ist.Note that the -Id switch is optional.

Wenn Sie den gleichen Befehl ohne -reinstall verwenden, wird ein Paket auf die neuere Version aktualisiert (falls zutreffend).The same command without -reinstall updates a package to a newer version, if applicable. Der Befehl gibt einen Fehler aus, wenn das betreffende Paket nicht bereits in einem Projekt installiert ist. Das bedeutet, dass Update-Package Pakete nicht direkt installiert.The command gives an error if the package in question is not already installed in a project; that is, Update-Package does not install packages directly.

Update-Package <package_name>

Standardmäßig wirkt sich Update-Package auf alle Projekte in einer Projektmappe aus.By default, Update-Package affects all projects in a solution. Verwenden Sie den Parameter -ProjectName mithilfe des Namens des Projekts, wie es im Projektmappen-Explorer dargestellt wird, um die Aktion auf ein bestimmtes Projekt zu beschränken:To limit the action to a specific project, use the -ProjectName switch, using the name of the project as it appears in Solution Explorer:

# Reinstall the package in just MyProject
Update-Package <package_name> -ProjectName MyProject -reinstall

Um alle Pakete in einem Projekt zu aktualisieren (oder mithilfe von -reinstall neu zu installieren), verwenden Sie -ProjectName ohne Angabe eines bestimmten Pakets:To update all packages in a project (or reinstall using -reinstall), use -ProjectName without specifying any particular package:

Update-Package -ProjectName MyProject

Verwenden Sie Update-Package nur ohne andere Argumente oder Parameter, um alle Pakete in einer Projektmappe zu aktualisieren.To update all packages in a solution, just use Update-Package by itself with no other arguments or switches. Verwenden Sie dieses Formular mit Bedacht, da es lange dauern kann, alle Updates auszuführen:Use this form carefully, because it can take considerable time to perform all the updates:

# Updates all packages in all projects in the solution
Update-Package 

Mit einem Update von Paketen in einem Projekt oder einer Projektmappe mithilfe von PackageReference, wird immer ein Update auf die neueste Version des Pakets ausgeführt (Paketvorabversionen sind davon ausgeschlossen).Updating packages in a project or solution using PackageReference always updates to the latest version of the package (excluding pre-release packages). Projekte, die packages.config verwenden, können – sofern gewünscht – die Updateversionen einschränken, so wie unten unter Einschränken von Updateversionen beschrieben.Projects that use packages.config can, if desired, limit update versions as described below in Constraining upgrade versions.

Ausführliche Informationen zu dem Befehl finden Sie unter Updatepaket.For full details on the command, see the Update-Package reference.

Weitere ÜberlegungenConsiderations

Folgendes kann bei der Neuinstallation eines Pakets beeinträchtigt werden:The following may be affected when reinstalling a package:

  1. Neuinstallation von Paketen gemäß der Neuzuweisung des ProjektzielframeworksReinstalling packages according to project target framework retargeting

    • In einem einfachen Fall funktioniert die Neuinstallation eines Pakets mithilfe von Update-Package –reinstall <package_name>.In a simple case, just reinstalling a package using Update-Package –reinstall <package_name> works. Ein Paket, das für ein altes Zielframework installiert wurde, wird deinstalliert, und das gleiche Paket wird für das aktuelle Zielframework des Projekts installiert.A package that is installed against an old target framework gets uninstalled and the same package gets installed against the current target framework of the project.
    • In einigen Fällen ist womöglich ein Paket vorhanden, das das neue Zielframework nicht unterstützt.In some cases, there may be a package that does not support the new target framework.
      • Wenn ein Paket portable Klassenbibliotheken (Portable Class Libraries, PCLs) unterstützt, und das Projekt einer Kombination aus Plattformen zugewiesen wird, die nicht länger vom Paket unterstützt werden, fehlen die Paketverweise nach der Neuinstallation.If a package supports portable class libraries (PCLs) and the project is retargeted to a combination of platforms no longer supported by the package, references to the package will be missing after reinstalling.
      • Dadurch können Probleme für Pakete auftreten, die Sie direkt verwenden oder für Pakete, die als Abhängigkeiten installiert wurden.This can surface for packages you're using directly or for packages installed as dependencies. Es ist möglich, dass das von Ihnen direkt verwendete Paket das neue Zielframework unterstützt, obwohl dessen Abhängigkeit dies nicht tut.It's possible for the package you're using directly to support the new target framework while its dependency does not.
      • Wenn Sie Pakete nach der Neuzuweisung Ihrer Anwendungsergebnisse in Build- oder Runtimefehlern neu installieren, sollten Sie Ihr Zielframework wiederherstellen oder nach alternativen Paketen suchen, die Ihr neues Zielframework ordnungsgemäß unterstützen.If reinstalling packages after retargeting your application results in build or runtime errors, you may need to revert your target framework or search for alternative packages that properly support your new target framework.
  2. Das Attribut „requireReinstallation“ wurde in „packages.config“ nach der Projektneuzuweisung oder dem Projektupgrade hinzugefügtrequireReinstallation attribute added in packages.config after project retargeting or upgrade

    • Wenn NuGet erkennt, dass Pakete von der Neuzuweisung oder einem Upgrade eines Projekts betroffen waren, wird allen betroffenen Paketverweisen ein requireReinstallation="true"-Attribut in packages.config hinzugefügt.If NuGet detects that packages were affected by retargeting or upgrading a project, it adds a requireReinstallation="true" attribute in packages.config to all affected package references. Aus diesem Grund löst jeder nachfolgende Build in Visual Studio Buildwarnungen für diese Pakete aus, damit Sie daran erinnert werden, diese neu zu installieren.Because of this, each subsequent build in Visual Studio raises build warnings for those packages so you can remember to reinstall them.
  3. Neuinstallation von Paketen mit AbhängigkeitenReinstalling packages with dependencies

    • Update-Package –reinstall installiert zwar die gleiche Version des ursprünglichen Pakets, es wird jedoch die neueste Version der Abhängigkeiten installiert, wenn keine bestimmten Versionseinschränkungen bereitgestellt werden.Update-Package –reinstall reinstalls the same version of the original package, but installs the latest version of dependencies unless specific version constraints are provided. Dadurch können Sie nur die Abhängigkeiten aktualisieren, die zum Beheben eines Fehlers benötigt werden.This allows you to update only the dependencies as required to fix an issue. Wenn dies jedoch eine Abhängigkeit auf eine ältere Version zurücksetzt, können Sie sie mit Update-Package <dependency_name> neu installieren, ohne das Abhängigkeitspaket zu beeinflussen.However, if this rolls a dependency back to an earlier version, you can use Update-Package <dependency_name> to reinstall that one dependency without affecting the dependent package.
    • Update-Package –reinstall <packageName> -ignoreDependencies installiert zwar die gleiche Version des ursprünglichen Pakets erneut, jedoch nicht die Abhängigkeiten.Update-Package –reinstall <packageName> -ignoreDependencies reinstalls the same version of the original package but does not reinstall dependencies. Nutzen Sie diese Maßnahme, wenn das Update von Paketabhängigkeiten zu einem unterbrochenen Zustand führen würde.Use this when updating package dependencies might result in a broken state
  4. Neuinstallation von Paketen, wenn abhängige Versionen involviert sindReinstalling packages when dependent versions are involved

    • Wie oben erläutert, ändert die Neuinstallation von Paketen nicht die Versionen anderer installierter Pakete, die davon abhängig sind.As explained above, reinstalling a package does not change versions of any other installed packages that depend on it. Es ist dann möglich, dass die Neuinstallation einer Abhängigkeit das abhängige Paket zerstört.It's possible, then, that reinstalling a dependency could break the dependent package.