我在使用 .NET Core 3.1/5 的 Windows 上。
dotnet build
我似乎一直遇到运行/时不会发生的 Ionide 报告错误的问题dotnet run
,以及看似锁定 DLL 文件阻止我运行dotnet build
直到关闭 VS Code,有时甚至需要手动终止 dotnet 进程。
在过去,当出现不一致时重新启动 VS Code 通常可以解决问题(单独的“清除项目缓存”似乎很少做任何事情)。不过,我一直在为一个新项目的一个非常具体的问题而苦苦挣扎:
报告的异常是:System.IO.FileNotFoundException - 无法加载文件或程序集“FSharp.Core,版本=5.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”。该系统找不到指定的文件。
确切的消息因我尝试了一些包版本和框架目标(netstandard2.0、netcoreapp3.1、net5)的组合而有所不同,但最终在构建/运行时完美运行的项目定义/DLL似乎因各种原因而失败通过 Ionide 的原因。
另一个例子:
检测到的包降级:FSharp.Core 从 4.7.2 到 4.7.1。直接从项目中引用包以选择不同的版本。
即使每个 .fsproj 文件都包含以下内容:
<PackageReference Include="FSharp.Core" Version="4.7.2" />
我可以检查什么来发现 Ionide 如何运行构建与如何dotnet build
执行之间的差异?