Поддерживает ли Nuget зависимости, привязанные к конкретной платформе?

У меня есть библиотека, для которой я хочу создать пакет 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), который может описывать зависимости, специфичные для платформы.


person Luke Foust    schedule 15.02.2011    source источник
comment
Это было отправлено как предложение на сайте nuget codeplex: nuget.codeplex.com/workitem/697   -  person Luke Foust    schedule 15.02.2011


Ответы (1)


Отдельный пакет для каждого набора зависимостей. Зависимости на уровне пакета. 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>
person ferventcoder    schedule 15.02.2011