【问题标题】:When compiling an F# project on macOS, how do I ensure the compiler can find the Mono assembly 'System.Numerics.dll'?在 macOS 上编译 F# 项目时,如何确保编译器可以找到 Mono 程序集“System.Numerics.dll”?
【发布时间】:2021-10-17 14:38:50
【问题描述】:

我正在尝试在 macOS 上的 Mono 下构建 .NET Framework 4.7.2、F#、类库项目¹。

但是,当我在外部项目上添加依赖项²时,我变得无法构建;收到这样的错误 (full log):

$ msbuild FSharpMod.sln -restore -p:Configuration=Release
...
FSC : error FS0078: Unable to find the file 'System.Numerics.dll' in any of /Users/ec/.nuget/packages/krafs.rimworld.ref/1.3.3087/ref/net472 /Users/ec/Sync/Code/FSharpMod/Source/FSharpModLibrary /usr/local/Cellar/mono/6.12.0.122/lib/mono/fsharp/ [/Users/ec/Sync/Code/FSharpMod/Source/FSharpModLibrary/FSharpModLibrary.fsproj]
Done Building Project "/Users/ec/Sync/Code/FSharpMod/Source/FSharpModLibrary/FSharpModLibrary.fsproj" (default targets) -- FAILED.
Done Building Project "/Users/ec/Sync/Code/FSharpMod/FSharpMod.sln" (default targets) -- FAILED.

Build FAILED.

所以,supposedlySystem.Numerics.dll 是 Mono 特有的东西。值得注意的是,如果我:

  • 在 Windows 上构建这个简单的测试,即不在 Mono 下,
  • 删除对外部依赖项的任何引用,
  • 或将其切换到 C# 而不是 F#,

... 然后它编译得很好;我没有遇到这个问题。据我们所知,只有 macOS/Mono/external-dependency/F# 的特定组合开始抱怨System.Numerics.dll

我的初步理解是,这可能是我的某种构建配置失败;但与我交谈过的人都无法找到造成这种情况的原因。希望对 Microsoft 构建系统、FSharp 或 Mono 有更深入了解的人能够提供帮助!


  1. 实际上只是来自 Windows 上的 Visual Studio 的 the four-line auto-generated starter F# project;没什么实质性的。
  2. 本例中的依赖是Krafs.Rimworld.Ref;但我认为这并不重要——我用 ripgrep 挖掘了反编译的 ILSpy 输出,但找不到对 System.Numerics 的单个引用。这个

【问题讨论】:

  • 这可能会有所帮助:nuget.org/packages/System.Runtime.Numerics
  • 日志表明您通过 Homebrew 安装了 Mono,因此一些引用被解析为 /usr/local/Cellar/mono/6.12.0.122/lib/mono/4.7.2-api/。这可能会以某种方式混淆 F# 编译器,但您可以在 GitHub github.com/dotnet/fsharp/issues 上与 F# 人员讨论。您是否尝试使用dotnet build
  • 您可能希望将此问题标记为“F#”而不是“C#”。

标签: .net macos f# msbuild mono


【解决方案1】:

这对我来说很好 Full log。正如@Lex li 指出的那样,我认为是单声道的位置。

对我来说单声道是在

/Library/Frameworks/Mono.framework/Versions/Current/Commands/mono

图书馆位于:

 /Library/Frameworks/Mono.framework/Versions/6.12.0/lib/mono/4.7.2-api/System.Numerics.dll

我建议你使用 brew 卸载并使用来自 mono org 的包安装它:https://www.mono-project.com/download/stable/#download-mac

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多