Xamarin Forms - 面向 .NET Standard

Xamarin Forms - Targeting .NET Standard

前阵子看了这篇文章: https://blog.xamarin.com/net-standard-library-support-for-xamarin/

因此,我将我们所有的库从可移植库转换为 .NET Standard (1.4)。我这样做是因为文章说 "This PCL now needs to be upgraded to target the .NET Standard Library, which can be found in the projects properties.".

但是,我不知道如何构建面向 .NET Standard 的 Xamarin Forms 项目。我克隆了 Xamarin Forms 示例,并打开了 MasterDetailPage 项目。我进入项目属性,并按照说明从可移植版切换到 .NET Standard。我立即收到一条错误消息,提示我需要选择加入 NuGet 3.0 支持。我对此很满意,但我该怎么做?

我发现如果删除 Xamarin Forms NuGet 包,我可以切换到 .NET Standard。但是,完成此操作后,我无法再添加 Xamarin Forms NuGet 包。它只是不断失败。与文章所说的相反,我无法添加对 .NET Standard 库的引用。当我尝试在我的解决方案中添加对现有 .NET Standard 库的引用时,Visual Studio 只是给我一个错误,指出该库不兼容。 Xamarin Forms 应该针对哪个版本的 .NET Standard?

如何获得使用 Xamarin Forms 支持编译的 .NET Standard 库?

事实证明,您可以获得一个 .NET Standard 项目来引用 Xamarin Forms NuGet 包,因此能够在 Xamarin Forms 中利用 .NET Standard 库。

这篇文章或多或少解释了如何去做。诀窍是在 project.json 中导入可移植框架。 https://xamarinhelp.com/dot-net-standard-pcl-xamarin-forms/

如果您无法让它工作,这里有一个可以工作的 Git 示例。 https://github.com/adamped/XamarinForms.NetStandard.git

我最终能够毫无问题地以 .NET Standard 1.4 为目标。

如果您想使用新的 Visual Studio 2017 版 csproj 而不是 project.json,您可以使用 dotnet migrate CLI 命令或 add/edit 此代码到您的 csproj 文件:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <PackageTargetFallback>$(PackageTargetFallback);portable-win+net45+wp8+win81+wpa8</PackageTargetFallback>
  </PropertyGroup>

</Project>