.net core .net标准Fsharp.Core 4.7.0.0=4.5.2?
我正在尝试在f#项目中使用Xplot.Plotly,使用 Visual Studio for Mac。当我调试时,我获得.net core .net标准Fsharp.Core 4.7.0.0=4.5.2?,.net-core,f#,plotly,.net Core,F#,Plotly,我正在尝试在f#项目中使用Xplot.Plotly,使用 Visual Studio for Mac。当我调试时,我获得 "Could not load file or assembly 'FSharp.Core, Version=4.7.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. 如果我运行dotnet,我将获得: Unhandled exception. Cannot print exception strin
"Could not load file or assembly
'FSharp.Core, Version=4.7.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
如果我运行dotnet,我将获得:
Unhandled exception.
Cannot print exception string because Exception.ToString() failed.
项目文件引用如下所示
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MathNet.Numerics.FSharp" Version="4.9.1" />
<PackageReference Include="XPlot.Plotly" Version="3.0.1" />
<PackageReference Include="FSharp.Core" Version="4.7.1" />
</ItemGroup>
</Project>
Exe
netcoreapp3.1
项目视图屏幕截图如下所示:
我不清楚为什么VS显示的是4.5.2而不是4.7.0.0
我还尝试将Fsharp.core.dll版本4.7.0.0明确地移动到bin目录。从控制台,结果是相同的。如果通过Visual studio运行Fsharp.core.dll,则版本4.7.0.0将被4.5.2.0覆盖,并以与上面相同的方式失败
更新:解决方法就是从VisualStudio中进行清理。然后从控制台运行dotnetbuild。然后,如果需要,可以从VisualStudio进行调试 目前,VS for Mac需要Mono,它被锁定为F#4.5,并且在加载.NET标准2.0组件时有许多其他问题。最终,VS for Mac将被更新,它将支持加载更高版本的F#编译器和FSharp.Core。目前,VS for Mac需要Mono,Mono被锁定在F#4.5上,并且在加载.NET标准2.0组件时有许多其他问题。最终,VS for Mac将被更新,它将支持加载更高版本的F#编译器和FSharp.Core。尝试设置
COREHOST_TRACE=1
以获取程序集绑定日志。@Asti谢谢。我确实这样做了,但是它没有改变任何东西,因为使用命令行会引发未处理的异常,而visual studio则在调试时抱怨文件未找到依赖项。@Asti实际上我在设置env变量后从中获得了一个跟踪文件。一切看起来都很好。e、 g.所有“探测的deps json和匹配的”跟踪打印在stderr
,而不是stdout
,因此您必须捕获它。4.7可能被项目本身引用(而非nuget)。你能在文本编辑器中打开fsproj并检查吗?@asti项目文件确实指向FSharp.Core 4.7.1。不确定为什么VS显示为4.5.2。但是,当我查看跟踪时,只使用了4.5.2,没有使用4.7。在跟踪中。尝试设置COREHOST\u trace=1
以获取程序集绑定日志。@Asti谢谢。我确实这样做了,但是它没有改变任何东西,因为使用命令行会引发未处理的异常,而visual studio则在调试时抱怨文件未找到依赖项。@Asti实际上我在设置env变量后从中获得了一个跟踪文件。一切看起来都很好。e、 g.所有“探测的deps json和匹配的”跟踪打印在stderr
,而不是stdout
,因此您必须捕获它。4.7可能被项目本身引用(而非nuget)。你能在文本编辑器中打开fsproj并检查吗?@asti项目文件确实指向FSharp.Core 4.7.1。不确定为什么VS显示为4.5.2。但是,当我查看跟踪时,只使用了4.5.2,没有使用4.7。在任何痕迹中。