Поддерживает ли Nuget зависимости, связанные с конкретной платформой? - PullRequest
3 голосов
/ 15 февраля 2011

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

1 Ответ

4 голосов
/ 15 февраля 2011

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