直接调用 F# 编译器 (FSC) 时出现链接错误

sdg*_*sdh 5 f#

我试图通过直接调用 FSC 来了解 F# 编译过程。

我想要:

  • 下载 SDK
  • 解压到本地文件夹
  • 在几个 F# 源文件上调用 FSC
  • 输出一个独立的 Linux 可执行文件

这是我的脚本:

#!/usr/bin/env bash

set -e

SDK_URL="https://download.visualstudio.microsoft.com/download/pr/820db713-c9a5-466e-b72a-16f2f5ed00e2/628aa2a75f6aa270e77f4a83b3742fb8/dotnet-sdk-5.0.100-linux-x64.tar.gz"
SDK=./dotnet_sdk

if [ ! -d $SDK ]
then
  echo "Fetching SDK... "
  wget -c $SDK_URL

  echo "Unpacking SDK... "
  mkdir -p $SDK
  tar -xzf ./dotnet-sdk-5.0.100-linux-x64.tar.gz --directory $SDK
fi

$SDK/dotnet $SDK/sdk/5.0.100/FSharp/fsc.exe \
  -I $SDK/shared/Microsoft.NETCore.App/5.0.0 \
  --targetprofile:netcore \
  --deterministic \
  --noframework \
  --standalone \
  --target:exe \
  --out:hello.exe \
  ./Hello.fs
Run Code Online (Sandbox Code Playgroud)

而我的程序Hello.fs

[<EntryPoint>]
let main argv =
  printfn "Hello, world. "
  0
Run Code Online (Sandbox Code Playgroud)

但是当我运行脚本时,我收到了这个错误:

Microsoft (R) F# Compiler version 11.0.0.0 for F# 5.0 
Copyright (c) Microsoft Corporation. All Rights Reserved. 
error FS2008: Static linking may not include a mixed managed/unmanaged DLL
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?