【问题标题】:Does Nuget support dependancies which are tied to a particular platform?Nuget 是否支持与特定平台相关的依赖项?
【发布时间】:2011-02-15 04:54:09
【问题描述】:

我有一个库,我想创建一个 Nuget 包,它有以下情况:

库编译成不同的版本:

  • Silverlight 4.0
  • .Net 4.0
  • .net 3.5
  • Windows 手机

幸运的是,Nuget 支持所有这些平台,因此在我的包的 lib 文件夹中,我可以为每个平台创建子文件夹,当库安装在任何这些平台上时,Nuget 会做正确的事情。

问题是我还有一些其他依赖项,这些依赖项因平台而异。例如:在 Windows Phone 上,我需要包含一个 3rd 方 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>

或者另一种方法是允许在每个平台文件夹(在 lib 文件夹下)内有一个单独的 .nuspec 文件,这可以说明特定于平台的依赖项。

【问题讨论】:

标签: windows-phone-7 dependencies nuget nuget-package


【解决方案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>

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多