次のような状況の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 ファイルを許可し、プラットフォーム固有の依存関係を詳しく説明することもできます。