dotnet
コマンドラインツールを使用して、nugetでダウンロードされたnotである既存のローカルパッケージへの参照を追加するにはどうすればよいですか? bar
でプロジェクトdotnet
にローカルパッケージを追加しようとしました。
$ dotnet add package /Users/sakra/foo/bin/Debug/foo.1.0.0.nupkg
パッケージfoo.1.0.0.nupkg
は、別のプロジェクトでdotnet pack
で作成されています。ただし、コマンドdotnet add package
は、ファイルfoo.1.0.0.nupkg
を https://api.nuget.org/ からダウンロードしようとしますが、もちろん失敗します。
単一の.nupkg
パッケージを直接インストールする方法はありません。 NuGetはフィードからのみインストールおよび復元できるため、パッケージが存在するディレクトリをフィードとして追加する必要があります。
これを行うには、ディレクトリの場所をフィードとして追加するNuGet.Config
ファイルを追加します。これにより、各puget関連コマンドにソースパラメーターを追加する必要がなくなります(esp dotnet restore
):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="local-packages" value="../foo/bin/Debug" />
</packageSources>
</configuration>
または、.NET Core 2.0ツール/ NuGet 4.3.0で、NuGetを使用することになっているcsprojファイルにソースを直接追加することもできます。
<PropertyGroup>
<RestoreSources>$(RestoreSources);../foo/bin/Debug;https://api.nuget.org/v3/index.json</RestoreSources>
</PropertyGroup>
これにより、すべてのコマンドがパッケージを使用できるようになります。
dotnet add package foo
(オプションで-v 1.0.0
を追加)dotnet restore
dotnet run
開発中に、nugetパッケージを変更しても、nupkgを生成するプロジェクトとそれを消費するプロジェクトの両方でバージョンをインクリメントしない場合、ローカルパッケージキャッシュをクリアしてから復元する必要があります。
dotnet nuget locals all --clear
dotnet restore
https://github.com/dasMulli/LocalNupkgExample に小さなサンプルプロジェクトを作成しました。
私はこれに苦労しましたたくさん、そしてこれが私がそれを機能させることができる唯一の方法です:
使用する新しい「パッケージソース」を作成する
nuget add ...
を使用して、パッケージソースに.nupkgファイルをインストールします
dotnet add package Foo -s ...
を使用してパッケージをインストールします。
具体的には、使用する必要があるコマンドは次のとおりです。
nuget add ../whatever/lib/MyPackage.1.0.0.nupkg -Source ./packages
そして:
dotnet add package MyPackage -s ./packages
注意してください具体的に、ここにいくつかのポイント:
まず、cannot.nupkgをパッケージフォルダーに単純にコピーします。これについて多くのバリエーションを試しましたが、言えることはそれだけです私、Windows、Mac、Linuxでは動作しません。
あなたはmust少なくとも3+以上のバージョンのnugetを使用する必要があります、またはこれは機能しません。 。netコアのデフォルトバージョンは2.xxです執筆時点。 nugetを手動でアップグレードする必要があります。
.csprojファイルでの参照は次のようになります。
... PackageReference Include = "SolidMud" Version = "1.0.0" ...
すなわち。特に、依存関係情報でパッケージソースを参照しないことに注意してください。パッケージ名とバージョンのみ。
基本的に、これはdotnet restore
を実行すると、パッケージがそのマシンのグローバルnugetキャッシュにキャッシュされない限り機能しないことを意味します。初めて復元を行うときにdotnet restore -s ./packages
を実行する必要があります。
別の回答で述べたように、パッケージはグローバルにキャッシュされます。同じバージョンIDの新しいバージョンにロールする場合は、dotnet nuget locals all --clear
を使用するか、キャッシュされたパッケージバージョンを手動で削除する必要があります。
「SolidMud」という.nupkgを最新の.Net Coreコンソールアプリケーションに復元する特定の完全な例を次に示します。
$ dotnet new console -n TestPkgs
The template "Console Application" was created successfully.
Processing post-creation actions...
Running 'dotnet restore' on TestPkgs/TestPkgs.csproj...
Restore succeeded.
$ cd TestPkgs/
$ mkdir packages
$ nuget add ../core-solidmud/lib/SolidMud.1.0.0.nupkg -Source ./packages
Installing SolidMud 1.0.0.
Successfully added package '../core-solidmud/lib/SolidMud.1.0.0.nupkg' to feed './packages'.
$ dotnet add package SolidMud -s ./packages
Microsoft (R) Build Engine version 15.3.117.23532
Copyright (C) Microsoft Corporation. All rights reserved.
Writing /var/folders/29/0695l4fj26j64kp4p8vwqq5h0000gn/T/tmpkRBaST.tmp
info : Adding PackageReference for package 'SolidMud' into project '/Users/doug/dev/dotnet-packages/TestPkgs/TestPkgs.csproj'.
log : Restoring packages for /Users/doug/dev/dotnet-packages/TestPkgs/TestPkgs.csproj...
info : Package 'SolidMud' is compatible with all the specified frameworks in project '/Users/doug/dev/dotnet-packages/TestPkgs/TestPkgs.csproj'.
info : PackageReference for package 'SolidMud' version '1.0.0' added to file '/Users/doug/dev/dotnet-packages/TestPkgs/TestPkgs.csproj'.
-s|--source
option を使用して、パッケージの場所フォルダーを指定します。例えば:
dotnet add package Microsoft.AspNetCore.Cors -s "d:\Cache\localfeed" -f netcoreapp1.1
[〜#〜] update [〜#〜]:@MartinUllrichに感謝 answer :単にインストールすることはできません.nupkg
ファイル。パッケージをインストールする前に、 ローカルフィード を指定し、フィードにローカル.nupkg
ファイルを追加する必要があります。詳細については、@ MartinUllrich answer を確認してください。
残念ながら、このブロッキングの問題に直面する可能性があります。
パッケージ 'NameOfPackage'はプロジェクトの 'all'フレームワークと互換性がありません
この時点でそれは開いており、安定したパッケージバージョンで再現することができました。