Wie installiere ich eine NuGet-Paket-.nupkg-Datei lokal?


Antworten:


462

Menü ExtrasOptionenPaketmanager

Geben Sie hier die Bildbeschreibung ein

Geben Sie einen Namen und einen Ordner an. OK klicken. Legen Sie Ihre NuGet-Paketdateien in diesem Ordner ab.

Gehen Sie zu Ihrem Projekt, klicken Sie mit der rechten Maustaste und wählen Sie "NuGet-Pakete verwalten" und wählen Sie Ihre neue Paketquelle aus.

Geben Sie hier die Bildbeschreibung ein

Hier ist die Dokumentation .


22
Eigentlich habe ich Schritt 1 ein paar Mal gemacht. Mein Paket wird jedoch in Schritt 2 nicht angezeigt, wenn ich es öffne, um installierte Pakete, Updates oder zuletzt verwendete Pakete anzuzeigen.
Tom

2
Auf meinem Bildschirm habe ich nur "Alle" unter "Installierte Pakete", nicht die "offizielle NuGet-Paketquelle", nicht mein benutzerdefiniertes "newNuget", sie fehlen.
Tom

1
Ich benutze vs2010. Ich versuche gerade, das neueste Nuget von der Homepage herunterzuladen und zu installieren. Download Klicken Sie auf Weiter Weiter ... dann Fehler ... M $ wie erwartet, es gibt einen Link zu bekannten Problemen, überprüft, dass die Signatur nicht übereinstimmt, dann muss ich das vorhandene Nuget deinstallieren und es ist einfach zu beheben. gut, mach das. Wenn ich den Computer neu starte und erneut installiere, kommt der gleiche Fehler zurück, die Signatur stimmt nicht überein. Jetzt bin ich mit der alten Version festgefahren, die neue Version möchte nicht installiert werden.
Tom

2
Problem gelöst. Ich habe nuget von Windows -> Systemsteuerung deinstalliert. So hat es nicht funktioniert. Ich musste VS starten und in Tools-> Extension Manager gehen ... und dann von dort aus auf Nuget deinstallieren klicken. VS. neu gestartet. Dann ging Nuget wieder zu installieren, es hat funktioniert. Jetzt werden auch die lokalen Nupkg-Dateien angezeigt (Bearbeiten: Sie befinden sich auf der Registerkarte Online, nicht auf der Registerkarte Installiert, mein Fehler in dem Bild, das ich poste). Danke für die Hilfe :)
Tom

1
Ich habe noch nicht genug Ruf, um Kommentare abzugeben - aber um Michael in den akzeptierten Antwortkommentaren zu VS2015 zu antworten, möchte ich immer noch online gehen. Ich hatte das gleiche Problem, aber in den Optionen funktioniert es für die Offline-Quellen, wenn Sie alle Online-Quellen deaktivieren. Nuget Options Bild
Mick m

302

Sie können auch die verwenden Package Manager-Konsole verwenden und das Install-PackageCmdlet aufrufen, indem Sie den Pfad zu dem Verzeichnis angeben, in dem sich die Paketdatei befindet-Source Parameter enthält:

Install-Package SomePackage -Source C:\PathToThePackageDir\

2
Kann ich so etwas auch mit dem Kommandozeilen-Tool machen?
Poul K. Sørensen

5
Ja. Die -SourceOption ist auch in nuget.exe verfügbar . Zum Beispiel:nuget install SomePackage -Source C:\PathToThePackageDir
Enrico Campidoglio

16
Möglicherweise müssen Sie auch das Flag -IncludePrerelease angeben. Andernfalls findet Install-Package das Paket nicht, wenn die Paketversion ein Dash-Suffix (z. B. "-beta1") enthält.
Jeff Sharp

9
Dies ist eine viel direktere Antwort als die akzeptierte. Danke für die Information!
David Peters

2
Funktioniert nicht für VS 2017, siehe z. Antwort von @Granger.
RenniePet

124

Für .nupkg-Dateien verwende ich gerne:

Install-Package C:\Path\To\Some\File.nupkg

7
Einzige Sache, die funktioniert hat. Wenn der Pfad zum Verzeichnis Leerzeichen enthält, setzen Sie ihn in doppelte Anführungszeichen.
Nikos

4
Zustimmen. Und erwähnenswert, dass nur absolute Pfade funktionieren
Sebastian J.

5
Funktioniert nicht für VS 2017, siehe z. Antwort von @Granger.
RenniePet

1
@RenniePet, das für mich in VS2017 funktioniert hat (aber ich hatte meine bereits .nupkgunter das gleiche Verzeichnis gestellt, in dem alle anderen Pakete gespeichert waren)
Rafalon

1
Es funktioniert nicht für mich, ich verwende VS2013 Version 12.0.21..5 und Nuget Package Manager 2.12.0.817 :(
Niraj Trivedi

56

Für Visual Studio 2017 und sein neues .csproj-Format

Sie können Install-Package nicht mehr nur verwenden, um auf eine lokale Datei zu verweisen. (Das liegt wahrscheinlich daran, dass diePackageReference Element keine Dateipfade unterstützt. Sie können nur die ID des Pakets angeben.)

Sie müssen Visual Studio zuerst den Speicherort Ihres Pakets mitteilen und können es dann einem Projekt hinzufügen. Die meisten Benutzer rufen den NuGet Package Manager auf und fügen den lokalen Ordner als Quelle hinzu (Menü ExtrasOptionenNuGet Package ManagerPaketquellen ). Dies bedeutet jedoch, dass der Speicherort Ihrer Abhängigkeit nicht an die Versionskontrolle mit dem Rest Ihrer Codebasis gebunden ist.

Lokale NuGet-Pakete unter Verwendung eines relativen Pfads

Dadurch wird eine Paketquelle hinzugefügt, die nur für eine bestimmte Lösung gilt, und Sie können relative Pfade verwenden.

Sie müssen eine nuget.configDatei im selben Verzeichnis wie Ihre erstellen.sln Datei erstellen. Konfigurieren Sie die Datei mit den gewünschten Paketquellen. Wenn Sie die Lösung das nächste Mal in Visual Studio 2017 öffnen, sind alle .nupkg-Dateien aus diesen Quellordnern verfügbar. (Die im Paket-Manager aufgeführten Quellen werden angezeigt, und Sie finden die Pakete auf der Registerkarte "Durchsuchen", wenn Sie Pakete für ein Projekt verwalten.)

Hier ist ein Beispiel nuget.config, um Ihnen den Einstieg zu erleichtern:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="MyLocalSharedSource" value="..\..\..\some\folder" />
    </packageSources>
</configuration>

Hintergrundgeschichte

Mein Anwendungsfall für diese Funktionalität ist, dass ich mehrere Instanzen eines einzelnen Code-Repositorys auf meinem Computer habe. In der Codebasis befindet sich eine gemeinsam genutzte Bibliothek, die als .nupkg-Datei veröffentlicht / bereitgestellt wird. Dieser Ansatz ermöglicht es den verschiedenen abhängigen Lösungen in unserer Codebasis, das Paket innerhalb derselben Repository-Instanz zu verwenden. Außerdem kann jemand mit einer Neuinstallation von Visual Studio 2017 den Code einfach auschecken, wo immer er möchte, und die abhängigen Lösungen werden erfolgreich wiederhergestellt und erstellt.


Ich verwende VS 2017 und bin auf dieses Problem nicht gestoßen. Ich habe gerade das -SourceArgument an übergeben Update-Packageund es hat gut funktioniert. Vielleicht etwas speziell mit dem Install-PackageBefehl zu tun ?
Greg Burghardt

48
  1. Fügen Sie die Dateien zu einem Ordner mit dem Namen LocalPackages neben Ihrer Lösung hinzu (es muss nicht so heißen, aber passen Sie die XML im folgenden Schritt entsprechend an).
  2. Erstellen Sie neben Ihrer Lösungsdatei eine Datei mit dem Namen NuGet.config mit den folgenden Inhalten

    <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <add key="LocalPackages" value="./LocalPackages" />
        </packageSources>
        <activePackageSource>
          <!-- this tells that all of them are active -->
          <add key="All" value="(Aggregate source)" />
        </activePackageSource>
     </configuration>
  3. Wenn die Lösung in Visual Studio geöffnet ist, schließen Sie sie und öffnen Sie sie erneut.

Jetzt sollten Ihre Pakete im Browser angezeigt werden oder mit Install-Package installiert werden können


Fantastische Antwort, genau die Lösung, nach der ich gesucht habe. Vielen Dank!
Jonathan

1
Dies kann nur daran liegen, dass ich ein Paket mit demselben Namen wie eines im Nuget-Repository habe, aber ich musste die Package Manager-Konsole verwenden und die Paketquelle als LocalPackages auswählen, bevor ich Install-Package ausführen konnte.
Luke

42

Wenn Sie eine .nupkg-Datei haben und nur die .dll-Datei benötigen, müssen Sie nur die Erweiterung in .zip ändern und das lib-Verzeichnis suchen.


3
Wenn Sie es als Zip-Datei behandeln, werden Dateien mit Leerzeichen im Dateinamen mit% extrahiert (wobei die Leerzeichen ersetzt werden). Um dies zu vermeiden, installieren Sie mit NuGet.
Rahatur

2
Eigentlich müssen Sie die Erweiterung nicht einmal umbenennen. Klicken Sie einfach mit der rechten Maustaste auf die Datei, wählen Sie Öffnen mit und suchen Sie eine Anwendung, mit der die ZIP-Datei geöffnet werden kann. Die NUPKG-Datei kann geöffnet werden. Anschließend können Sie die erforderliche DLL-Datei in den angegebenen Ordner extrahieren.
Jyao

1
Beste Lösung, die ich brauche
Leo Nguyen

8

Nur um ein Update zu geben, gibt es geringfügige Änderungen für Visual Studio 2015-Benutzer.

So verwenden oder Paket manuell zu installieren, gehen Sie zu Extras -> Optionen -> NuGet Package Manager -> Paketquellen

Klicken Sie auf die Schaltfläche Hinzufügen, wählen Sie die Quelle aus und vergessen Sie nicht, auf " Aktualisieren " zu klicken, da dadurch der Ordner für Ihre Pakete aktualisiert wird. Bearbeiten Sie den gewünschten Namen Ihrer Paketquelle, wenn Sie möchten:

Geben Sie hier die Bildbeschreibung ein

Um Ihr hinzugefügtes Paket auszuwählen, klicken Sie mit der rechten Maustaste auf Ihre Lösung und wählen Sie " Nuget-Pakete verwalten ".

Die Dropdown-Liste befindet sich rechts und wählen Sie Durchsuchen, um Ihre Pakete zu durchsuchen, die Sie in Ihrer Ordnerquelle angegeben haben. Wenn sich in dieser Ordnerquelle kein Nuget-Paket befindet, ist dieses leer:

Geben Sie hier die Bildbeschreibung ein


6

Unter Linux mit NuGet CLI sind die Befehle ähnlich. Führen Sie zum Installieren von my.nupkg aus

nuget add -Source some/directory my.nupkg

Führen Sie dann dotnet restoreaus diesem Verzeichnis

dotnet restore --source some/directory Project.sln

oder fügen Sie dieses Verzeichnis als NuGet-Quelle hinzu

nuget sources Add -Name MySource -Source some/directory

und dann sagen msbuild, dass Sie dieses Verzeichnis mit /p:RestoreAdditionalSources=MySourceoder verwenden sollen /p:RestoreSources=MySource. Der zweite Schalter deaktiviert alle anderen Quellen, was beispielsweise für Offline-Szenarien gut ist.


1
Unter Mac (ich gehe auch von Linux aus) können Sie sich aufgrund dieses Fehlers nicht darauf verlassen, nuget sourcesob Sie dotnet restore(oder VS Mac ) verwenden . Ich musste die lokale Quelle manuell hinzufügen (siehe dieses GH- Problem ). ~/.nuget/NuGet/NuGet.Config
gabe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.