F#.NET标准库项目

时间:2017-06-10 15:21:04

标签: f# .net-standard

我有一个Xamarin Forms解决方案,包含几个F#便携式类库。

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

  

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

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

这里最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

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

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上得到完全支持,否则它与.NET生态系统的其他部分不兼容。

答案 1 :(得分:0)

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

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

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

Source: Xamarin Blog