リリースモードでコンパイルされたNuGetプロジェクトのパッキング?


109

リリースモードでコンパイルされたコードを使用してNuGetパッケージを作成する方法はありますか?または、デバッグモードでコンパイルされたパッケージのみを公開(この場合はローカルで利用可能にする)する必要がある理由はありますか?

nuget pack以下のnuspecファイルがあるプロジェクトディレクトリから、リリースモードでのみコンパイルしたコードで呼び出すたびに、デバッグフォルダー("\bin\Debug\SomeProject.dll")でDLLが見つからないというメッセージが表示されます。デバッグモードでコンパイルすると、これらのファイルはそこにあり、必要に応じてパックされます。

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>$id$</id>
        <version>$version$</version>
        <authors>$author$</authors>
        <owners>$author$</owners>
        <iconUrl>http://somewhere/project.png</iconUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>$description$</description>
    </metadata>
</package>

回答:


207

:あなたはこのようにそれを解決することができますNuGet.exe pack Foo.csproj -Prop Configuration=Release参照)。


10
リンクからの短編小説を読みたい人のために(ただし、よく読んでください)、v1.3からv1.4への変更があり、デフォルトのリリースから、デフォルトで変更できるプロジェクト設定からプルされました。プロジェクトファイルを直接(VS GUIオプションなし)。今後のすべてのnuget pack呼び出しでコマンドラインプロパティの微調整を回避するには、お気に入りのテキストエディターでプロジェクトファイルのXMLを編集します。
パトリッジ

4
リリースバージョンとデバッグバージョンの両方を1つのパッケージにパッケージ化し、デバッグソリューションとリリースソリューションの構成のどちらであるかに応じて、プロジェクトでデバッグバージョンとリリースバージョンを自動使用する方法はありますか?
JD

2
あなたは、単にあなたのパッケージのためのデバッグシンボルが必要な場合、あなたはどちらか* .nu​​specであなたのPDBファイルを含めることができる(例えば、<file src="bin\Release\*.pdb" target="lib\net40\" />)またはシンボルパッケージを公開し、あなたのDLLパッケージと一緒に。
パトリッジ'14

1
@Giorgiリンクの有効期限が切れた
Weipeng L 2018

1
@JD私はまた、デバッグとリリースの両方をパッケージ化したい、と私はこれを発見した:stackoverflow.com/questions/37673692/...
ピーター・ユー

16

ビルド後のイベントを使用していて、デバッグ構成とリリース構成のどちらを使用しているかにかかわらずパッケージを作成する場合は、ビルド後のイベントのコマンドラインを次のように設定できます。

"<path to nuget tools>\NuGet.exe" pack "$(ProjectPath)" -Prop Configuration=$(ConfigurationName)

10

を実行するときにNuGetで自動的にリリースモードを使用するnuget packには、次の操作を行います。

  1. .csprojテキストエディタでファイルを開きます。
  2. 次の行を見つけます。

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    
  3. この行では、交換してくださいDebugRelease
  4. 変更内容を保存。

0

ここでの答えは良いですが、.NET Standardプロジェクトではこれに関して多くの問題がありました。リリースバイナリを公開するだけのプロジェクトがありましたが、デフォルトのビルド出力パスが考慮されていませんでした。

これをCSProjに追加すると、ここで承認された回答を使用できるようになります

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
      <OutputPath>$(SolutionDir)bin\$(PlatformTarget)\Release</OutputPath>
</PropertyGroup>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.