0

在 NuGet 包的 .nuspec 文件中,包依赖项是基于每个目标框架指定的。例如,在System.Collections.NonGeneric包中,这里是它的 TF 依赖项:

<dependencies>
  <group targetFramework="MonoAndroid1.0" />
  <group targetFramework="MonoTouch1.0" />
  <group targetFramework=".NETFramework4.6" />
  <group targetFramework=".NETStandard1.3">
    <dependency id="System.Diagnostics.Debug" version="4.3.0" exclude="Compile" />
    <dependency id="System.Globalization" version="4.3.0" />
    <dependency id="System.Resources.ResourceManager" version="4.3.0" exclude="Compile" />
    <dependency id="System.Runtime" version="4.3.0" />
    <dependency id="System.Runtime.Extensions" version="4.3.0" exclude="Compile" />
    <dependency id="System.Threading" version="4.3.0" exclude="Compile" />
  </group>
  <group targetFramework="Xamarin.iOS1.0" />
  <group targetFramework="Xamarin.Mac2.0" />
  <group targetFramework="Xamarin.TVOS1.0" />
  <group targetFramework="Xamarin.WatchOS1.0" />
</dependencies>

它当然不包含所有 TFM,所以我的问题是:如果我的调用应用程序针对 .NET Framework 4.6.1 (.NET Standard 1.4) 会发生什么?由于 .NET Standard 1.4 >= 1.3,是否仍需要下载 6 个 System.* 包?或者因为我没有专门针对 .NET Standard 1.3 TFM,所以我的项目没有依赖项?感谢您的澄清。

4

1 回答 1

0

NuGet 始终选择“最接近”(小于或等于的最高版本)目标框架。它不必是完全匹配的。因此,包没有指定 netstandard1.4 依赖项并不重要。它列出了 netstandard1.3,因此如果它是最佳匹配,NuGet 将选择它。

但是,最佳匹配也考虑目标框架标识符。因此,.NET Framework 4.6.1 项目将匹配 .NET Framework 4.6 依赖组,因此不会考虑 .NET Standard 依赖组。

于 2021-11-05T14:48:07.500 回答