コマンドnuget pack -properties Configuration=Release
を実行してnugetパッケージを更新しようとしていますが、次のエラーが発生します。
'bin/Release/{project-name}/bin/Release'が見つかりません。プロジェクトが構築されたことを確認してください
なぜそれが自分のリリースフォルダに移動し、その後別のリリースフォルダに移動し続けるのかよくわかりません。私はここでかなり迷っています、そして私は何をすべきかわかりません。
TL; DR
新しい<Project Sdk="Microsoft.NET.Sdk">
.csprojファイル形式の場合、.Net Frameworkをターゲットにしている場合やプロジェクトがマルチターゲットの場合でも、 dotnet pack
を使用してNuGetパッケージをビルドします。 .csproj
(およびオプションで.nuspec
)を含むディレクトリからこれを実行します
dotnet pack MyProject.csproj -c Release
デフォルトでは、dotnet pack
は出力.nupkg
を/bin/Release
フォルダーに配置します。これは、古いnuget pack
が配置した現在のデフォルトフォルダーとは異なります。
ほとんどの設定は新しいプロジェクト形式の[パッケージ]タブで設定できるため、新しい.nuspec
形式用に明示的な.csproj
ファイルを作成しないことをお勧めします。ただし、.nuspec
がある場合、dotnet pack
はプロジェクト名に一致する.nuspec
ファイルも結合し、バージョンとメタデータセットからの$
シンボル置換を可能にします。 .csproj
で。
詳細
私もこの問題を経験しました-以前のバージョンでは、私は通常 このアプローチ を使用して同じ名前の.csproj
ファイルで.nuspec
に対してパックします。 $id$
、$version$
などのすべての$トークンを使用します。
ただし、新しい<Project Sdk="Microsoft.NET.Sdk">
csproj形式に対してこれを試みる場合:
nuget pack {MyProject}.csproj -Prop Configuration=Release
同じエラーが発生しました(bin\release
の「重複」に注意してください):
エラーNU5012:「bin\Release {MyProject}\bin\Release \」が見つかりません。プロジェクトがビルドされていることを確認してください。
そして、シンボルを含む.nuspec
に対してパッキングしようとした場合(NuGetバージョン:4.7.1.5393)
nuget pack {MyProject}.nuspec -Prop Configuration=Release
Nugetが$トークンを自動的に解決できないため、 役に立たないメッセージ が表示されます。
値をnullまたは空の文字列にすることはできません。パラメータ名:値
ただし、nugetの代わりにdotnetパックを使用する
dotnet pack MyProject.csproj -c Release
目的の場所に到達します。つまり、.nuspec
の$記号が.csproj
から正しく同期されたマルチターゲットNuGetパッケージです(これは、.nupkg
を開くことで確認できます)。たとえば7Zipのファイルで、パッケージルートの最後の.nuspec
ファイルを調べます)
マルチターゲットプロジェクト(net452とnetstandard2.0の両方をターゲット)でも同じ問題が発生しました。
私の修正/ハックは、Nugetに渡されるプロパティのリストに 'TargetFramework = net452'を追加し、.nuspec-fileのfiles-sectionにnetstandard2.0-outputを手動で追加することでした。
誰かがより良い解決策を見つけることを願っています
ルーンの答えの一部(設定TargetFramework=net471
NuGetプロパティ)
nuGetバージョン4.9.1を使用する(手順はこちら: https://stackoverflow.com/a/53614798/1813219 )
私のために行く方法でした。
実際、私は自分の側で問題を解決しただけです。 Nugetは非表示のdllを見つけられない場合があります。これが私の解決策です:
プロジェクトをビルドします。
Visual Studioですべてのファイルを表示して、隠しファイルを表示し、binフォルダーの下にあるdllを表示できるようにします。
右クリックして、ファイルエクスプローラーでフォルダーを開き、現在のフォルダーにコピーして、ファイルを置き換えたり、非表示を解除したりします。
もう一度「NugetPack」を実行します。