Nuget beruhigen

Nuget ist sehr cool, spinnt in Zusammenarbeit mit dem Visual Studio allerdings das ein oder andere Mal. Ein paar Handgriffe genügen meist.

Problem

Ich habe ein ASP.NET MVC4-Projekt und wollte heute einfach mal ein update-package über alle nugets in dem Projekt ausführen. Der Befehl selbst lief super durch. Na ja, zumindest fast. In meinem Fall kam sofort nach dem Update die Meldung, dass die *OpenAuth-Pakete nicht erfolgreich entfernt werden konnten. Abb. 1 zeuigt die entsprechende Meldung im Dialog „Manage Nuget Packages“.

Abb. 1: Nuget meckert
Abb. 1: Nuget meckert

Jetzt könnte man natürlich dem Rat folgen und auf „Restart Now“ klicken. Das allerdings bringt nicht viel. Nicht nur das. Das Problem ist, dass alle möglichen anderen Package-Funktionen jetzt auch nicht mehr laufen. Wenn ich z.B. versuche, jetzt jQuery zu installieren kommt sowas dabei raus:

PM> install-package jQuery
'jQuery 1.9.0' already installed.
***** already has a reference to 'jQuery 1.9.0'.
One or more packages could not be completely uninstalled: DotNetOpenAuth.AspNet.4.0.3.12153, DotNetOpenAuth.Core.4.0.3.12153, DotNetOpenAuth.OAuth.Consumer.4.0.3.12153, DotNetOpenAuth.OAuth.Core.4.0.3.12153, DotNetOpenAuth.OpenId.Core.4.0.3.12153, DotNetOpenAuth.OpenId.RelyingParty.4.0.3.12153. Restart Visual Studio to finish uninstall.

Lösung

Na toll! Und nun? Ich habe ein wenig gebraucht, um rauszufinden, was eigentlich schief läuft. Letztlich brauchte mich ein Blick in den Ordner „packages“ in meinem Projektordner auf die Lösung:

Abb 2: Ordner noch da
Abb 2: Ordner noch da

Das Problem hier ist offensichtlich, dass die „alten“ Ordner, also die mit den Versionen, die eigentlich gelöscht werden sollten, noch da sind. Daran macht nun VS offensichtlich fest, dass das Update nicht geklappt hätte und beruhigt sich nicht mehr.
Als erstes sollte man nun die Solution im Studio schließen und dann die alten Ordner (in meinem Beispiel die mit 4.0x-Version) löschen. Nach dem erneuten Öffnen der Solution ist dann plötzlich alles in Ordnung.

Am Rande

Das OpenAuth und seine packages macht mir übrigens auch beim uninstall immer wieder Probleme. Selbst mit der Option -RemoveDependencies aufgerufen, kommt mein nuget nicht damit klar:

PM> uninstall-package DotNetOpenAuth.OpenId.Core -RemoveDependencies
uninstall-package : Unable to uninstall 'DotNetOpenAuth.OpenId.Core 4.2.1.13026' because 'DotNetOpenAuth.OpenId.RelyingParty 4.2.1.13026' depends on it.
At line:1 char:1
+ uninstall-package DotNetOpenAuth.OpenId.Core -RemoveDependencies
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Uninstall-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.UninstallPackageCommand

Die einfachste Lösung für dieses Problem ist das Löschen aller OpenAuth-Ordner im package-Ordner und das entfernen aller OpenAuth-Einträge in der package.config. Dann ist endlich Ruhe mit OpenAuth :-).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.