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

如何解决使用Microsoft Solver Foundation时的System.TypeLoadException异常

问题:Microsoft Solver Foundation在.NET 6.0中运行报错TypeLoadException

我有一项大学作业,需要使用Microsoft Solver Foundation(可通过Visual Studio的NuGet获取)求解线性规划(LP)。以下是我的代码:

using System;
using Microsoft.SolverFoundation;
using Microsoft.SolverFoundation.Common;
using Microsoft.SolverFoundation.Services;

SolverContext context = SolverContext.GetContext();
Model model = context.CreateModel();

Decision potato    = new Decision(Domain.RealNonnegative, "ingredient_potato");
Decision meat      = new Decision(Domain.RealNonnegative, "ingredient_meat");
Decision vegetable = new Decision(Domain.RealNonnegative, "ingredient_vegetable");

model.AddDecisions(potato, meat, vegetable);

model.AddConstraint("calorie", 800 * potato + 1000 * meat + 5 * vegetable == 600);
model.AddConstraint("protein", 150 <= 5 * potato + 500 * meat <= 250);
model.AddConstraint("vitamin", 10 * potato + 100 * vegetable >= 200);

model.AddGoal("price", GoalKind.Minimize, 5 * potato + 20 * meat + 7 * vegetable);

Solution solution = context.Solve(new SimplexDirective());
Console.Write(solution.GetReport());

在.NET 6.0环境下运行时,遇到如下错误:

System.TypeLoadException: 'Could not load type 'System.Runtime.Remoting.Messaging.CallContext' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.'

原因分析

Microsoft Solver Foundation是较老的类库,依赖.NET Framework专属的System.Runtime.Remoting.Messaging.CallContext类型,而该类型在.NET Core/.NET 5及以上版本(包括.NET 6)中已被移除,因此触发类型加载失败的异常。

解决方案

  • 切换目标框架到.NET Framework:将项目目标框架改为.NET Framework 4.x(推荐4.6.1及以上),Microsoft Solver Foundation原生支持该框架,切换后代码可正常运行。操作步骤:Visual Studio中右键项目→属性→应用程序→目标框架,选择对应.NET Framework版本。
  • 保留.NET 6的替代方案:使用兼容.NET 6的线性规划库,比如MathNet.Numerics或Google.OrTools,这些库原生支持现代.NET平台,可替代Microsoft Solver Foundation完成线性规划求解。

内容的提问来源于stack exchange,提问作者Jord van Eldik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:45:38