4

次のような状況のNugetパッケージを作成したいライブラリがあります。

ライブラリはさまざまなバージョンにコンパイルされます。

  • シルバーライト 4.0
  • .Net 4.0
  • .net 3.5
  • ウインドウズの電話

幸いなことに、これらのプラットフォームはすべて Nuget でサポートされているため、パッケージの lib フォルダーに、これらのプラットフォームごとにサブフォルダーを作成できます。これらのプラットフォームのいずれかにライブラリがインストールされている場合、Nuget は適切な処理を行います。

問題は、プラットフォームによって異なる他の依存関係があることです。例: Windows Phone では、サード パーティの zip ライブラリ (wpSharpLibZip) を含める必要がありますが、この依存関係は、zip ユーティリティが含まれている他のプラットフォームには存在しません。

このシナリオは Nuget でサポートされていますか? wpSharpLibZip 依存関係が Windows Phone プラットフォームにのみ存在するようにしたいと考えています。プラットフォームごとに個別のパッケージを作成する必要がありますか?


この機能が存在しない場合、次のように実装されていると想像できます。

パッケージ マニフェストのセクションを次のサポートに変更します。

<dependencies>
   <dependency id="Newtonsoft.Json" version="3.5.8" />
   <dependency id="wpSharpLibZip">
       <platform>Silverlight 4.0 - Windows Phone</platform>
   </dependency>
</dependencies>

または、別の方法として、各プラットフォーム フォルダー (lib フォルダーの下) 内に個別の .nuspec ファイルを許可し、プラットフォーム固有の依存関係を詳しく説明することもできます。

4

1 に答える 1

4

異なる依存関係セットごとに個別のパッケージ。依存関係はパッケージ レベルです。NuGet は現時点でこのシナリオをサポートしていません。

更新: NuGet 2.x 以降、依存関係にはグループがあるため、この方法で依存関係を設定できます。詳細については、 https://docs.nuget.org/create/nuspec-reference#specifying-dependencies-in-version-2.0-and-aboveを参照してください

<dependencies> 
   <group>
      <dependency id="RouteMagic" version="1.1.0" />
   </group>

   <group targetFramework="net40">
      <dependency id="jQuery" />
      <dependency id="WebActivator" />
   </group>

   <group targetFramework="sl30">
   </group>
</dependencies>
于 2011-02-15T05:06:56.040 に答える