为什么 PCL NuGet 包无法针对 Xamarin 平台?

Why does a PCL NuGet package fail to target Xamarin platform?

我维护一个开源 PCL 库,该库打包为针对(以及其他)Xamarin 平台的 NuGet。它已被许多开发人员成功使用。最近我收到了一份问题报告,其中一位开发人员说他必须修补我的 NuGet 包才能将该包包含在他的应用程序中。

他将其更改为: 便携-net45+win+win8+wp8+wpa81

致: portable-net45+wp8+wpa81+netcore45+monoandroid1+xamarin.ios10

虽然我没有在我的包 nuspec 中明确指定 xamarin 目标,但在构建 Xamarin 应用程序时它从来都不是问题。显然是现在。这可以与 Visual Studio 2015,最近的 Xamarin 更新(我没有用我的库验证)有关吗?还有其他原因吗?

我在 Xamarin 论坛上提到了 Matt Ward 的 the answer,他说:

为了在 Xamarin 项目中使用,NuGet 包中不需要 lib 目录中的 monoandroid/xamarin.ios。如果 NuGet 包包含兼容的可移植 class 库 (PCL),则可以使用它。你只需要 lib/monoandroid 或 lib/xamarin.ios 如果你有一个使用部分 monoandroid 或 xamarin.ios 的库(即特定于平台)。

此外,在 NuGet 包中的可移植 class 库配置文件中不需要 monoandroid 和 xamarin.ios。这些被 NuGet 视为可选。 Json.NET 例如,在其 NuGet 包中没有任何对 monoandroid 或 xamarin.iOS 的引用,Xamarin 项目可以使用它们。

带有 NuGet 3 的 Simple.OData.Client NuGet 包的问题是 PCL 配置文件目录中的额外 win。这似乎是 a bug 在 NuGet 3