我在Linux Mint(18.3)机器上同时安装了mono(5.10.1.20)和dotnet core(2.1.4)。
我想使用VS Code Ionide创建一个项目:Ctrl + Shift + P-> F#:新建项目->控制台。这没有问题。但是,当我尝试构建它时,我得到:
我看一下我的.fsproj文件,的确如此-它说:
<TargetFramework>net461</TargetFramework>
但是,我在网上找到了一些文章,声称人们可以毫无问题地构建它(例如,在此处找到Suave-Music-Store教程:
https://legacy.gitbook.com/book/theimowski/suave-music-store/details)
我肯定在这里错过了一些东西。所以我的问题是:究竟是什么(以及如何使之工作)?
PS:我可以通过将目标框架更改为“netcoreapp2.0”来破解这一点,但是我仍然确定模板应该可以立即使用。
最佳答案
另一个答案是设置FrameworkPathOverride MsBuild参数。您所需的程序集已包含在Mono中,您可以通过设置FrameworkPathOverride告诉编译器在哪里找到它们。您可以通过在此处包括netfx.props
文件https://github.com/fsprojects/FSharp.TypeProviders.SDK/blob/master/netfx.props轻松地做到这一点。您将其下载到您的仓库中,然后将以下行添加到所有项目文件中: <Import Project="..\netfx.props" />
这是几个项目所做的。一旦MSBuild也进行了更改,或者出现了正式的nuget程序包,我希望许多FSharp项目都将切换到其中一种方法。