我在Windows上使用。NET核心3.1/5。
我似乎一直存在Ionide报告错误的问题,这些错误在运行dotnet build
/dotnet run
时不会发生,而且似乎锁定了DLL文件,使我无法运行dotnet build
,直到关闭VS Code,有时甚至需要手动终止dotnet进程。
在过去,当出现不一致时重新启动VS代码通常可以解决问题(单独"清除项目缓存"似乎很少有任何作用(。不过,我一直在为一个新项目的一个非常具体的问题而挣扎:
报告的异常为:系统。IO.FileNotFoundException-无法加载文件或程序集"FSharp"。Core,版本=5.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'。系统找不到指定的文件。
由于我尝试了一些包版本和框架目标的组合(netstandard2.0、netcoreapp3.1、net5(,确切的消息各不相同,但最终在构建/运行时完美工作的项目定义/DLL似乎因Ionide的各种原因而失败。
另一个例子:
检测到包降级:FSharp。取芯4.7.2至4.7.1。直接从项目中引用包以选择不同的版本。
即使每个.fsproj文件都包括以下内容:
<PackageReference Include="FSharp.Core" Version="4.7.2" />
我可以检查哪些内容来查找Ionide运行构建的方式与dotnet build
执行方式之间的差异?
发现一件事似乎可以解决当前项目的即时问题:SDK中的.props文件具有以下内容:
<ItemGroup Condition="'$(DisableImplicitFSharpCoreReference)' != 'true'">
<PackageReference Include="FSharp.Core" Version="$(FSharpCoreImplicitPackageVersion)" />
</ItemGroup>
添加:
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
在我的.fsproj文件中,现在似乎所有内容都引用了相同的版本,而不是之前5.0.0(未引用时(和4.7.1/4.7.2(仅引用4.7.2时(之间的不一致。