5

升级版:

我想直接从 .NET Core SDK 调用 F# 编译器(即 fsc)。

我知道 dotnet build & co,但是当我只需要编译一个简单的问题时,我不想让他们参与进来,即在 fsc file.fs 就足够的情况下。

我尝试在 .NET Core SDK 中搜索(在我的 Mac 上,它位于 /usr/local/share/dotnet/sdk/2.2.102/FSharp 中)并在那里找到了一个 fsc.exe 文件。不幸的是,当我尝试使用 dotnet /usr/local/share/dotnet/sdk/2.2.102/FSharp/fsc.exe 启动它时,它给了我一个错误:

error FS0193: Could not load file or assembly 'Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.

环境:macOS、.NET Core 2.2

4

3 回答 3

3

安装 dotnet core ( https://dotnet.microsoft.com/download ) 后,您应该能够从命令行构建 F# 项目。

cd my-fs-project
dotnet build
dotnet run
于 2019-07-01T13:18:43.123 回答
2

可能不想fsc直接调用,因为dotnet buildandfsproj是构建项目的首选方式。

如果你必须这样做,那么它可以在 SDK 文件中找到:

dotnet /usr/share/dotnet/sdk/5.0.100/FSharp/fsc.exe

用于dotnet --list-sdks查找您的 SDK 的完整路径。

于 2020-12-02T17:26:12.890 回答
1

fsc我通过以下方式在 Linux 上编译使用。

从 .NET 6(我在 Gentoo,但你可以推断路径)

dotnet /opt/dotnet-sdk-bin-6.0/sdk/6.0.101/FSharp/fsc.dll test.fs --targetprofile:netcore --target:exe --out:test.exe

从本地构建fsc

artifacts/bin/fsc/Debug/net5.0/fsc test.fs --targetprofile:netcore --target:exe --out:test.exe

test.runtimeconfig.json然后我用以下内容手动创建

{
  "runtimeOptions": {
    "tfm": "net5.0",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "5.0.0"
    },
    "rollForwardOnNoCandidateFx": 2
  }
}

然后我能够使用dotnet test.exe.

于 2022-01-23T10:02:29.400 回答