【问题标题】:F# .NET Standard Library ProjectF# .NET 标准库项目
【发布时间】:2017-06-10 15:21:03
【问题描述】:

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

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

无法安装包“FSharp.Core 4.2.1”。你正试图 将此包安装到目标项目中 '.NETPortable,Version=v4.5,Profile=Profile78',但包确实 不包含任何程序集引用或内容文件 与该框架兼容。如需更多信息,请联系 包作者。

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

这里最好的方法是什么?

【问题讨论】:

  • 我不知道你是否可以在 Xamarin 项目中使用 .NET Standard,但你可以在 F# 中创建 .NET Standard 库。 "dotnet new classlib -lang F#"

标签: f# .net-standard


【解决方案1】:

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

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

这对你的项目来说很重要:

对于面向 .NET Frameworks 4.0 或更低版本以及 PCL 的现有包,请使用 FSharp.Core 4.1 或更低版本。

.NET Standard(截至目前)尚未在 .NET 的所有领域中普及。正如@Foole 所说,您现在确实可以使用 F# 创建一个 .NET Standard 类库。但它与 .NET 生态系统的其他部分不兼容,直到 .NET Standard 完全支持所有风格的 .NET。

【讨论】:

  • 自从您回答后,这似乎发生了变化,因为您现在添加的链接提到了netstandard1.6 (netstandard1.6)
【解决方案2】:

您可以尝试将您的 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

【讨论】:

    猜你喜欢
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2017-08-13
    相关资源
    最近更新 更多