You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌入F# Interactive时抛出StopProcessingExn None异常求助

解决F# Interactive嵌入时的StopProcessingExn None异常

我之前也碰到过类似的问题,结合你的环境(VS2017 Enterprise + .NET Core 2.0 + FSharp.Compiler.Service 17.0.1 + FSharp.Core 4.2.0),可以从这几个方向排查解决:

1. 优先解决版本兼容性问题

FSharp.Compiler.Service(简称FCS)的版本和目标框架、FSharp.Core版本需要严格匹配。17.0.1版本的FCS是为较新的F#和.NET版本设计的,而.NET Core 2.0对应的FSharp.Core最高仅支持到4.6.2左右,FCS 17.x已经不再兼容.NET Core 2.0环境。

建议你把FCS版本降级到10.2.4,这个版本是专门适配.NET Core 2.0的,同时FSharp.Core可以保持4.2.0,或者升级到同框架兼容的最高版本(比如4.6.2)。

2. 检查F# Interactive会话的初始化代码

如果版本调整后仍有问题,要确保你初始化FsiEvaluationSession时配置了正确的参数,比如加载必要的引用、设置正确的工作目录。给你一个可参考的初始化示例:

open FSharp.Compiler.Service

// 初始化FCS服务实例
let fcsService = FSharpCompilerService.Create()

// 配置会话主机参数
let sessionConfig = FsiEvaluationSessionHostConfig(
    fsiPrinter = None,
    fsiErrorPrinter = None,
    redirectOutput = true,
    workingDirectory = System.IO.Directory.GetCurrentDirectory()
)

// 必须加载的核心引用,包括FSharp.Core和当前项目程序集
let requiredReferences = 
    [ typeof<obj>.Assembly.Location // 基础mscorlib程序集
      typeof<FSharp.Core.FSharpFunc<_,_>>.Assembly.Location // FSharp.Core程序集
      // 当前项目编译后的输出程序集路径
      System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "bin/Debug/netcoreapp2.0/YourProject.dll")
    ]

// 创建F# Interactive评估会话
let evaluationSession = 
    fcsService.CreateEvaluationSession(
        sessionConfig,
        references = requiredReferences,
        otherFlags = [||]
    )

注意:如果你的项目依赖其他NuGet包,也要把对应程序集的路径加入到requiredReferences列表中。

3. 验证VS2017的环境配置

确保你的VS2017已经安装了最新的更新补丁(至少是15.9.x版本),并且.NET Core 2.0 SDK已正确安装。另外,检查F#工具组件是否完整:可以通过VS安装器修改安装,确保".NET Core跨平台开发"和"F#语言支持"组件都已勾选。

如果以上步骤都尝试后还是有问题,建议创建一个全新的.NET Core 2.0 F#控制台项目,只添加必要的FCS引用和简单的会话初始化代码,排除项目本身的配置干扰。

内容的提问来源于stack exchange,提问作者Wingjam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:18:13