dotnet hinzufügen Paket mit den lokalen package-Datei
Mithilfe der dotnet
Kommandozeilen-tool, wie kann ich das hinzufügen einer Referenz zu einem bestehenden lokalen Paket nicht heruntergeladen mit nuget? Ich habe versucht, indem ein lokales Paket zu einem Projekt bar
mit dotnet
.
$ dotnet add package /Users/sakra/foo/bin/Debug/foo.1.0.0.nupkg
Paket foo.1.0.0.nupkg
wurde erstellt mit dotnet pack
in einem anderen Projekt. Der Befehl dotnet add package
jedoch versucht, die Datei zu downloaden foo.1.0.0.nupkg
aus https://api.nuget.org/ was natürlich fehlschlägt.
InformationsquelleAutor sakra | 2017-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es nicht eine Möglichkeit, direkt zu installieren, ein Einzelzimmer
.nupkg
Paket. NuGet kann nur installieren und wiederherstellen von feeds, so, müssen Sie das Verzeichnis, wo das Paket ist, wie ein feed.Um dies zu tun, fügen Sie eine
NuGet.Config
Datei fügt hinzu, dass die Lage des Verzeichnisses, wie füttern, so dass Sie nicht haben, fügen Sie den parameter source, um jede puget-bezogenen Befehl (espdotnet restore
):Alternativ in .NET-Core-2.0-tools /NuGet-4.3.0, man könnte auch hinzufügen, die Quelle direkt an die csproj-Datei, die angeblich verbrauchen die NuGet:
Dadurch werden alle Befehle in der Lage sein, verwenden Sie das Paket:
dotnet add package foo
(Optional-v 1.0.0
)dotnet restore
dotnet run
Beachten Sie, dass während der Entwicklung, wenn Sie den nuget-Paket-aber nicht, Inkrement, das ist die version in beiden das Projekt, produziert der nupkg und in das Projekt verbraucht, brauchen Sie, um klar Ihre lokale Pakete-cache, bevor Sie die Wiederherstellung erneut:
Habe ich eine kleine Beispiel-Projekt an https://github.com/dasMulli/LocalNupkgExample
..foo/bin/Debug
nicht enthalten nuspec-Datei, und der Fehler 'ist nicht kompatibel mit "alle" frameworks im Projekt' ist alles, was ich bekomme. Ich glaube wirklich nicht, dass die Verwendung eines random-Ordner als Paket-Quelle arbeitet mehr mit nuget 4 (falls es das jemals Tat).Ich habe eine kleine Beispiel-Projekt unter github.com/dasMulli/LocalNupkgExample, Sie können es mit
./run-example.sh
Ich bemerkte in Ihrem Beispiel haben Sie beide ein Nuget.config-Datei und ein RestoreSources block in die csproj-Datei. In Ihrer Diskussion erwähnen Sie auch, dass die RestoreSources ist eine alternative zu den Nuget.config-Datei. Ist die RestoreSources block verwendet werden, in Verbindung mit der Nuget.config-Datei?
als ich hoffte, deutlich zu machen, mit dem text zwischen die, Sie sind gemeint als alternative, zum von zu wählen, aber die csproj -
RestoreSources
Funktion funktioniert nur auf die kommende Version 2.0 desdotnet
CLI und VS 2017 15.3 Update (sowohl in der Vorabversion im moment)ja, mit beiden von Ihnen in der Probe auf GitHub, die ein 'Vorrang'? In meinem Fall habe ich nicht den 2.0 prerelease installiert, wird also die Arbeit mit der Nuget.config-Datei. Aber mit der Vorabversion was passiert, wenn, zum Beispiel, enthalten Sie widersprüchliche (oder einfach anders) Informationen?
InformationsquelleAutor Martin Ullrich
Ich habe gekämpft, mit diesem viel, und dies ist der einzige Weg, ich kann damit es funktioniert:
Erstellen eine neue Paket-Quelle " zu nutzen
Installieren .nupkg-Datei in der Paket-Quelle, mit
nuget add ...
Verwenden
dotnet add package Foo -s ...
um das Paket zu installieren.Insbesondere die Befehle, die Sie verwenden müssen, sind:
Und:
Bemerken speziell, ein paar Punkte hier:
Erste, Sie nicht kopieren Sie einfach die .nupkg in den packages-Ordner, ich habe versucht, viele Variationen und alles was ich sagen kann ist, dass es nicht für mich arbeiten, auf windows, mac oder linux.
Du muss mit einer version von nuget die mindestens 3+, oder dieser nicht funktioniert. Die Standard-version .net core ist 2.xx zu der Zeit des Schreibens. Sie müssen manuell aktualisieren Sie die nuget.
Ihre Referenz in der .csproj-Datei wird wie folgt Aussehen:
Ie. Speziell beachten Sie, dass es nicht auf Ihre Paket-Quelle in Abhängigkeit von Informationen; nur der Paketname und die version.
Im Grunde bedeutet dies, dass, wenn Sie laufen
dotnet restore
es wird nicht funktionieren, es sei denn, das Paket wird zwischengespeichert, in Ihren globalen nuget-cache auf dem Computer; Sie müssen ausführendotnet restore -s ./packages
das erste mal, wenn Sie tun eine Wiederherstellung.Wie bereits erwähnt in einer anderen Antwort, die Pakete sind weltweit zwischengespeichert; wenn Sie wollen, zu Rollen, auf eine neue version mit derselben version-id, die Sie verwenden müssen
dotnet nuget locals all --clear
oder manuell löschen Sie die zwischengespeicherten Paket-version.Hier ist ein konkretes, vollständiges Beispiel für die Wiederherstellung ein .nupkg namens 'SolidMud' in a brand new .Net-Core-console-Anwendung:
Erstellen von nuget-Paketen ist ein ganzes Thema für sich. Wenn Sie verwenden .Net-core-oder eine aktuelle version des nuget finden Sie unter docs.microsoft.com/en-us/dotnet/core/tools/...; Sie kann im Grunde einfach
dotnet pack
odernuget pack Foo.csproj
; wenn Sie die volle .Net, ist es erheblich mehr Schmerzen zu tun, müssen Sie auf die Jagd rund um für details.InformationsquelleAutor Doug
Angeben-Paket, Standort-Ordner mit
-s|--source
option. Zum Beispiel:UPDATE: Dank @MartinUllrich Antwort: Sie können nicht installieren Sie einfach eine
.nupkg
- Datei. Es ist notwendig, geben Sie eine lokaler feed und fügen Sie eine lokale.nupkg
- Datei, um das Futter vor, Sie könnten das Paket installieren. Check @MartinUllrich Antwort für details.Leider konnte man das Gesicht der Sperrung Ausgabe:
Paket 'NameOfPackage' ist nicht kompatibel mit "alle" frameworks im Projekt
In diesem moment ist es offen, und ich war in der Lage zu reproduzieren, die es auf einer stabilen Paket-version.
was denken Sie über
-v|--version
- option, um den genauen Paket-version? Und ja, es ist nicht notwendig, einen lokalen feed, um ein Paket zu installieren. Habe ich mehr details in der Antwort.Ich bekomme die gleiche Fehlermeldung (nicht kompatibel mit allen Rahmen), aber das scheint ein allgemeiner Fehler für 'cant find package'. Zum Beispiel, versuchen
dotnet add package ADFADFDFVCXVZD -s ....
gibt noch den gleichen Fehler. Ich glaube nicht, dass es ein framework Problem; ich denke, dass es einfach nicht finden können, die nupkg-Datei. dh. Ich glaube nicht, dass das funktioniert.zu installieren versuchen, ein Paket von der VS offline-feed:
C:\Program Files (x86)\Microsoft SDKs\NuGetPackages
In meinem Fall, es funktioniert gut, also ich glaube, der Fehler ist indotnet pack
Befehl.btw in 90% der Zeit habe ich gesehen das
incompatible with 'all'
Nachricht, es war, weil der name des Pakets falsch war oder es bereits einfoo
,lib
etc. nuget-Paket auf nuget.org.InformationsquelleAutor Ilya Chumakov