f# - 无法在 C# 项目中引用 'FSharpOption<>'

标签 f#

我无法引用 FSharpOption<>在 Visual Studio 2015 中针对 Xamarin.Android 的 C# PCL 项目中。

这是一个 video这显示了我试图解决它的步骤。

我收到的错误如下:

The type FSharpOption<> is defined in an assembly that is not referenced. You must add a reference to assembly

FSharp.Core, Version=3.7.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a



注意:

我的 C# 项目确实引用了 FSharp.Core。它引用了我的 F# 项目正在使用的相同 FSharp.Core 版本:

some_path\packages\FSharp.Core.4.0.0.1\lib\portable-net45+monoandroid10+monotouch10+xamarinios10\FSharp.Core.dll

添加应用配置

我放在 Android 客户端项目中的 app.config 文件与我在测试项目中使用的 app.config 文件相同,该文件是用 F# 编写的。

app.config 如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a"
                          culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="4.4.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

任何人都可以为我提供有关在我的 C# 项目中引用 FSharp.Core 功能所需的步骤的指导吗?

更新

我有另一个类在同一个 C# 项目中成功引用了 FSharp.Core:

static class Utility
{
    public static bool IsSome(this FSharpOption<string> option) => FSharpOption<string>.get_IsSome(option);
    public static bool IsNone(this FSharpOption<string> option) => FSharpOption<string>.get_IsNone(option);
}

上面的代码似乎不会导致任何编译错误。同样,这个文件与我的另一个会导致错误的文件在同一个项目中。

导致错误的代码如下:

using Microsoft.FSharp.Core;
// . . .
if (_viewModel.FamilySummary.IsSome()) {
}

注意:using FSharp.Core 的语句似乎被忽略了。

我的 View 模型托管在 Visual Studio 内的 F# 项目中。

最佳答案

当我遇到类似问题时,解决方案是从两个项目(C# 和 F# 项目)中卸载 FSharp.Core,然后再次安装它,但使用 NuGet 包管理器作为解决方案(不是针对每个项目单独使用)。

因此,从两者中删除 FSharp.Core 后,转到“工具”>“NuGet 包管理器”>“管理解决方案的 NuGet 包...

在那里搜索 FSharp.Core,勾选要添加库的所有项目,然后选择要添加的版本。

那为我解决了这个问题。

编辑:另一件值得检查的事情是,任何使用 FSharp.Core 的库实际上都使用与您安装的库相同的版本。

关于f# - 无法在 C# 项目中引用 'FSharpOption<>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39638418/

相关文章:

wpf - F# WPF : Handling click events in ListBox

f# - 如何在 F# 中为绘图卡建模

c# - AleaGPU C# 中的高阶函数

f# - F#中的Dapper点网查询

f# - 映射 json 输入但不在 Suave 中输出

f# - Seq.sort 和 Seq.sortBy 对于包含 NaN 的 float 序列的不一致行为

f# - 反转列表然后添加新项目

f# - 使用不可变列表创建具有链接节点的邻接列表

c# - 我可以将 PHP 关联数组传递给 ComVisible .NET 函数吗?

F# 类型约束和重载解析