Hilfe bei nuget Problemen, Speicherort, HintPath, RepositoryPath

Veröffentlicht von

Nuget sollte die Verwaltung und Abhängigkeiten von Softwarekomponenten in Visual Studio erleichtern. Statt die Quellen eines Projektes mit ins eigene Projekt zu hieven, werden diese aus dem Nuget-Repository gezogen. In der passenden Version.

Dummerweise hatte ich damit des Öfteren Probleme. Idealerweise sollte ich ein Softwareprojekt aus der Versionsverwaltung auschecken und direkt bauen können. Fehlen Komponenten, dann lädt Nuget diese aus dem Internet herunter. Fertig.

Bei mir sah es jedoch öfter so aus:

Die Nuget-Bibliotheken wurden nicht gefunden und mit einem Warnicon versehen. Dabei waren diese im Ordner „packages“ vorhanden. Visual Studio hatte diese korrekt heruntergeladen. Ein „Restore Nuget Packages“ resultierte nur in einem:

All packages are already installed and there is nothing to restore.

Aus mir nicht nachvollziehbaren Gründen war nuget so konfiguriert, dass die Pakete unter c:\Users\Username\AppData\Roaming\NUget abgelegt worden sind. Dies wurde dann in der .csproj Datei so vermerkt. Funktionierte auf einem Rechner super, auf dem des Kollegen dann nicht mehr.

In solchen Fällen schaut man in die „NuGet.Config“ Datei. Zu finden auch im AppData-Verzeichnis:

Den Unterpunkt für den repositoryPath wirft man hier am Besten komplett raus:

Anschließend wurden die NuGet-Pakete wieder im Solution-Ordner unter „packages“ abgelegt. Den HintPath korrigiert man dann entsprechend auf dieses um. Z.B.:

<HintPath>..\packages\ExceptionHandling.1.0.0\lib\net45\ExceptionHandling.dll</HintPath>

Dies legt den Pfad als relativen Pfad innerhalb der Solution an. Idealerweise sollte er den „HintPath“ gar nicht brauchen, sondern direkt selbst im „packages“ Ordner finden. Wer die .csproj Dateien nicht von Hand bearbeiten möchte, deinstalliert und installiert das Package erneut.

Wiederherstellung und Neuinstallation der Nuget-Pakete erzwingen

Klappt das immer noch nicht oder werden Pakete trotz Restore nicht richtig abgerufen. Kann man folgendes probieren. In der „Package Mananager Konsole“ führt man, bei geöffneter Solution, folgenden Befehl aus:

Update-Package -reinstall

Dies lädt alle Pakete erneut herunter und bindet diese neue ein. Der Ansatz hat bei mir in einigen Fällen geholfen, in denen nur die Referenz im HintPath gefehlt hat.

Fazit

Das waren die größten Probleme, mit welchen ich zu kämpfen hatte. Bei Problemen empfehle ich erstmal die Projektdateien von Visual Studio zu prüfen, ob hier irgendwelchen absoluten Pfade drinnen stehen. Auch relative Pfade können zu Problemen führen, wenn man Projekte z.B. über ein External einbindet und der relative Pfad nicht mehr stimmt.

Viel Erfolg!

5 Kommentare

  1. Hallo Andy,

    Danke für den Artikel. Ich stehe mit meinen Projekten vor dem gleichen Problem. Die NuGet Pakete liegen plötzlich nicht mehr im Solutions Folder, sondern zentral. Leider gibt es aber in der NuGet.Config kein Tag mit einem Key „repositoryPath“. ich arbeite mit der aktuellen Version von VS 2019 und NuGet. Hast Du evtl. einen Tipp?

    1. Bei mir hat es geholfen, die Projekte komplett neu aus SVN oder Git abzurufen und dann die Nuget-Pakete installieren zu lassen. Damit ist es am Ende auch egal, wo die liegen. Die ganzen Probleme lagen denke einfach daran, dass die Projekte mit irgendeinem Visual-Studio Update durcheinander gekommen sind. Im Zweifelsfall hilft dann noch ein „Update-Package -reinstall“. Seitdem hatte ich keine Probleme mehr in dieser Richtung.

  2. Danke, hat geholfen. Ich denke auch, das beim letzten Update was durcheinander gekommen ist. „Update-Package -reinstall“ war nicht erforderlich.

Kommentar hinterlassen

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