F# .NET 标准库项目

F# .NET Standard Library Project

我有一个 Xamarin Forms 解决方案,其中包含几个 F# 可移植 class 库。

为了使用 Microsoft.Azure.MobileClient 的最新版本 (4.0.0),我需要升级到 FSharp.Core 4.2.1,但这似乎与配置文件 78 不兼容:

Could not install package 'FSharp.Core 4.2.1'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile78', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

可以使用 Xamarin 项目中的 .NET Standard class 库,但是否可以在 F# 中创建 .NET Standard class 库?

这里最好的前进方向是什么?

错误消息告诉您的是该项目正在针对 PCL 目标。 FSharp.Core 4.2.x 不再有 PCL 目标,只包含 .NET Framework 和 .NET Standard 1.6 二进制文件。两者都不兼容 F# 在此处使用的 PCL 目标。

FSharp.Core 的发行说明最近更新了开发人员指南:https://www.nuget.org/packages/FSharp.Core/

这是您项目的重要部分:

For existing packages targeting .NET Frameworks 4.0 or lower and PCLs, use FSharp.Core 4.1 or lower.

.NET Standard(截至此时)尚未在所有 .NET 中普及。正如@Foole 所说,您今天确实可以使用 F# 创建 .NET Standard class 库。但它与 .NET 生态系统的其余部分不兼容,直到 .NET 标准在所有 .NET 版本上得到完全支持。

您可以尝试将您的 Xamarin.Forms(和您的 F#)项目从 .NET Portable 转换为 .NET Standard 2.0,因为这两个包都可以添加到 .NET Standard。

如何将 Xamarin.Forms 转换为 .NET Standard

  • 创建新的 Xamarin.Forms 项目(已创建的项目跳过)
  • 在同一解决方案中创建新的 .NET Standard 库项目
  • 添加对 Xamarin.Forms 包的引用
  • 将您的内容从 Xamarin.Forms 共享项目复制到新库项目
  • 更改所有引用(来自 Android、iOS、UWP)以指向库项目而不是共享项目

Source: Xamarin Blog