繁体   English   中英

针对特定依赖项 NuGet

[英]Target specific dependencies NuGet

我的 .nuspec 文件中有以下依赖项:

<dependencies>
        <group>
          <dependency id="Dep1" version="2.4.11" />
          <dependency id="Dep2" version="1.0.4" />
          <dependency id="Dep3" version="1.0.4" />
          <dependency id="Dep4" version="1.0.0" />
          <dependency id="Dep5" version="1.0.4" />
          <dependency id="Dep6" version="1.0.4" />
        </group>
    </dependencies>

我已经创建了一个本地 nuget 服务器,我正在 Xamarin Forms 解决方案中安装这个 NuGet 包。

问题是在解决方案的 Android 部分它将安装,但在 .netstandard 部分它会抱怨 Dep 4、5、6 仅适用于 MonoAndroid(这是正确的)。 我的 .netstandard 解决方案中不需要 dep 4,5 和 6。

NU1202:Dep4 1.0.0 与 netstandard2.0 (.NETStandard,Version=v2.0) 不兼容。 Package Dep4 1.0.0 支持:monoandroid10 (MonoAndroid,Version=v1.0) NU1202: Package Dep5 1.0.4 与 netstandard2.0 (.NETStandard,Version=v2.0) 不兼容。 封装 Dep5 1.0.4 支持:monoandroid44 (MonoAndroid,Version=v4.4)

如何分离每个 targetFramework 的依赖项? 我在依赖项类别中尝试了多种组变体,但没有任何方法可以解决此问题。

仔细阅读后

https://docs.microsoft.com/en-us/nuget/reference/nuspec#dependencies-element

https://docs.microsoft.com/en-us/nuget/reference/target-frameworks

https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/nuget-manual

可以总结为:

版本 2.0+

作为单个平面列表的替代方案,可以根据目标项目的框架配置文件使用 .

每个组都有一个名为 targetFramework 的属性,并包含零个或多个元素。 当目标框架与项目的框架配置文件兼容时,这些依赖项会一起安装。

没有 targetFramework 属性的元素用作依赖项的默认或后备列表。 有关确切的框架标识符,请参阅目标框架。

因此,就我而言,它将是:

    <dependencies>
       <group targetFramework="MonoAndroid10">
          <dependency id="Dep1" version="2.4.11" />
          <dependency id="Dep2" version="1.0.4" />
          <dependency id="Dep3" version="1.0.4" />
          <dependency id="Dep4" version="1.0.0" />
          <dependency id="Dep5" version="1.0.4" />
          <dependency id="Dep6" version="1.0.4" />
       </group>
       <group>
          <dependency id="Dep1" version="2.4.11" />
          <dependency id="Dep2" version="1.0.4" />
          <dependency id="Dep3" version="1.0.4" />
        </group>
    </dependencies>

这样,当我在 .netstandard 项目上安装包时,它会检查 targetFramework 并看到它不是 MonoAndroid,它将回退到没有 targetFramework 的元素,并且只使用 Dep1、Dep2 和 Dep3。 对于 MonoAndroid10 项目,它将执行相同的操作并使用所有这些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM