我试图通过直接调用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
我的程序
Hello.fs
:
[<EntryPoint>]
let main argv =
printfn "Hello, world. "
0
但是当我运行脚本时,我得到了这个错误:
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
我在这里错过了什么?