2011-06-30 7 views
73

リリースモードでコンパイルされたコードを使用してNuGetパッケージを作成する方法はありますか?あるいは、デバッグモードでコンパイルされたパッケージのみを公開する必要があるのですか?リリースモードでコンパイルされたNuGetプロジェクトをパッキングしますか?

私のプロジェクトディレクトリ(ここでは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> 

答えて

131

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

+7

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

+2

1つのパッケージにリリースとデバッグの両方のバージョンをパッケージ化してから、プロジェクトが自動的に使用するようにする方法はありますか? –

+0

@JD:私が知る限り、それは可能ではありませんが、私はそれをナゲットに寄与することを考えていました。どのシナリオでこの機能が必要なのか説明できますか?いつ助けになるのですか? – Giorgi

14

あなたは、ビルド後のイベントを使用していて、デバッグを使用しているかどうか、パッケージを作成したり、ビルド後のイベントコマンドラインので、同様にあなたが設定できる設定を解除したい場合:自動的に使用NuGetを持っているために

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

リリースモードnuget packを実行する場合、次の操作を実行します。

  1. .csprojファイルをテキストエディタで開きます。
  2. 次の行を検索します。この行で

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    
  3. を、ReleaseDebugを交換してください。
  4. 変更を保存します。
関連する問題