У меня есть библиотека, для которой я хочу создать пакет Nuget, для которого существует следующая ситуация:
Библиотека компилируется в разные версии:
- Silverlight 4.0
- .Net 4.0
- .net 3.5
- Windows Phone
К счастью, все эти платформы поддерживаются Nuget, поэтому в папке lib моего пакета я могу создавать подпапки для каждой из этих платформ, и Nuget поступит правильно, когда библиотека будет установлена на любой из этих платформ.
Проблема в том, что у меня есть другие зависимости, которые различаются в зависимости от платформы. Например: на Windows Phone мне нужно включить стороннюю zip-библиотеку (wpSharpLibZip), но эта зависимость не существует на других платформах, в которые включены утилиты для архивирования.
Поддерживается ли этот сценарий в 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>
Или другой способ может заключаться в том, чтобы разрешить отдельный файл .nuspec внутри каждой папки платформы (в папке lib), который может описывать зависимости, специфичные для платформы.