Как напрямую вызвать компилятор F# на.NET Core?
UPD.:
Я хочу напрямую вызывать компилятор F# (т.е. fsc) из.NET Core SDK.
Я знаю о 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
3 ответа
После установки ядра dotnet ( https://dotnet.microsoft.com/download) вы сможете создать проект F# из командной строки.
cd my-fs-project
dotnet build
dotnet run
Ты наверное не хочешь звонить
fsc
прямо, поскольку
dotnet build
и
fsproj
это предпочтительный способ строительства проектов.
Если вам нужно, то его можно найти в файлах SDK:
dotnet /usr/share/dotnet/sdk/5.0.100/FSharp/fsc.exe
Использовать
dotnet --list-sdks
чтобы найти полный путь к вашему SDK.
Я компилирую с помощью 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
.