gpt4 book ai didi

f# - 如何让 FSI 在 NET5 下工作并让愚蠢的 stackoverflow 消息 "Title cannot contain ..."闭嘴?

转载 作者:行者123 更新时间:2023-12-04 15:13:15 24 4
gpt4 key购买 nike

我正在将一个相当小的 F# 项目从 Net Framework 迁移到 NET5。迁移非常简单,一切正常,包括测试。

但是,当我运行一些脚本时,我现在收到以下错误:


Microsoft (R) F# Interactive version 11.0.0.0 for F# 5.0
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

>
[Loading C:\Users\kkkma\AppData\Local\Temp\nuget\28772--091a5e4a-2a27-4d4d-9891-2b58055c5317\Project.fsproj.fsx
Loading C:\GitHub\Berreman\Berreman\Analytics\Examples\References.fsx]
namespace FSI_0002.Project

namespace FSI_0002

[Loading C:\Users\kkkma\AppData\Local\Temp\nuget\28772--091a5e4a-2a27-4d4d-9891-2b58055c5317\Project.fsproj.fsx]
namespace FSI_0003.Project

Binding session to 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Runtime.dll'...
Binding session to 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Runtime.Numerics.dll'...
System.TypeLoadException: Could not load type 'System.ICloneable' from assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
at Berreman.MathNetNumericsMath.complexDiagonalMatrix(Int32 n, Complex e)
at Berreman.Geometry.complexIdentityMatrix(Int32 n) in C:\GitHub\Berreman\Berreman\Berreman\Geometry.fs:line 17
at Berreman.Geometry.ComplexMatrix3x3.get_identity() in C:\GitHub\Berreman\Berreman\Berreman\Geometry.fs:line 307
at Berreman.MaterialProperties.Eps.fromRefractionIndex(RefractionIndex _arg1) in C:\GitHub\Berreman\Berreman\Berreman\MaterialProperties.fs:line 70
at FSI_0004.opticalProperties(RefractionIndex refractionIndex) in C:\GitHub\Berreman\Berreman\Analytics\Examples\Glass_01.fsx:line 51
at FSI_0004.getGlassInfo(Boolean useThickPlate, RefractionIndexThickness nh1, FSharpOption`1 nh2Opt, IncidentLightInfo light) in C:\GitHub\Berreman\Berreman\Analytics\Examples\Glass_01.fsx:line 61
at <StartupCode$FSI_0004>.$FSI_0004.main@() in C:\GitHub\Berreman\Berreman\Analytics\Examples\Glass_01.fsx:line 98
Stopped due to error
>

当我检查 C:\Users\kkkma\AppData\Local\Temp\nuget\28772--091a5e4a-2a27-4d4d-9891- 中的 Project.fsproj.resolvedReferences.paths 时2b58055c5317(这是我运行脚本时 FSI 创建的文件夹)我看到它从 C:\Users\kkkma\.nuget\packages\microsoft.netframework.referenceassemblies.net48\1.0 开始。 0\build\.NETFramework\v4.8\Facades\System.Runtime.InteropServices.RuntimeInformation.dll 并且它还有一些其他的 Net Framework 解析引用。这让我相信 FSI 以某种方式“决定”使用 Net Framework 而不是 NET 5。

文件 fsi.runtimeconfig.json 包含正确的信息:

{
"runtimeOptions": {
"tfm": "net5.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "5.0.0"
}
}
}

有谁知道如何强制 FSI 选择 NET 5 而不是 Net Framework?

最佳答案

截至 Visual Studio 2019 version 16.9 ,您可以启用一个选项以使用 dotnet fsi 运行交互式 F# 脚本。这适用于 .NET 5 代码。

这是通过“工具”>“选项”>“F# 工具”>“F# 交互”>“使用 .NET Core 脚本”设置的。

完整的详细信息和说明可以在 https://devblogs.microsoft.com/dotnet/f-and-f-tools-update-for-visual-studio-16-9/ 找到

关于f# - 如何让 FSI 在 NET5 下工作并让愚蠢的 stackoverflow 消息 "Title cannot contain ..."闭嘴?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64804440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com