我无法在64位操作系统上为MSF工作制作LPSolvePlugIn。 (在从asp mvc 3应用程序调用的c#dll托管内部)
这是否有特定版本? 我应该构建针对x86的应用程序吗? 我应该从源代码重建求解器插件到目标x64吗?
我很茫然,插件上没有太多文档,最新的代码似乎针对的是MSF 2.0.7(我目前有3.0.1或3.0.2)
任何帮助将不胜感激。我会在星期一检查并在需要时添加更多信息。
由于
答案 0 :(得分:3)
我终于解决了。
我得到了MSF标准3.0.2 64位。 在64位计算机上使用lpsolve55.dll为64位编译LPSolvePlugin代码(来自http://www.peno.be/MSF/)(从http://sourceforge.net/projects/lpsolve/获取)
将lpsolveplugin.dll和lpsolve55.dll复制到msf的plugins文件夹
在我的webservice的web.config中添加了以下内容(如果需要,可以添加到桌面应用程序的app.config中)
<configSections>
<section name="MsfConfig"
type="Microsoft.SolverFoundation.Services.MsfConfigSection, Microsoft.Solver.Foundation, Version=3.0.2.10889, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
allowLocation="true"
allowDefinition="Everywhere"
allowExeDefinition="MachineToApplication"
restartOnExternalChanges="true"
requirePermission="true" />
</configSections>
<MsfConfig>
<MsfPluginSolvers>
<MsfPluginSolver name="LpSolveLP"
capability="LP"
assembly="LpSolvePlugIn.dll"
solverclass="SolverFoundation.Plugin.LpSolve.LpSolveSolver"
directiveclass="SolverFoundation.Plugin.LpSolve.LpSolveDirective"
parameterclass="SolverFoundation.Plugin.LpSolve.LpSolveParams" />
<MsfPluginSolver name="LpSolveMIP"
capability="MILP"
assembly="LpSolvePlugIn.dll"
solverclass="SolverFoundation.Plugin.LpSolve.LpSolveSolver"
directiveclass="SolverFoundation.Plugin.LpSolve.LpSolveDirective"
parameterclass="SolverFoundation.Plugin.LpSolve.LpSolveParams" />
</MsfPluginSolvers>
</MsfConfig>
并且有效。
希望它有所帮助!
答案 1 :(得分:2)
我有一个VS 2012 Express,我的lpsolve55.dll / LpSolvePlugIn.dll出现“BadImage”错误。
然后我比较了C#示例(http://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.0/处的lp_solve_5.5.2.0_cs.net.zip)并发现,我将项目属性/应用程序/目标网络从4.5更改为“.NET框架4.0“它开始工作: - )
答案 2 :(得分:1)
在放弃之前我尝试了一段时间。 首先,您可能正在使用xpress版的MSF。您可以快速达到一些限制。至于获得专业版或教育版,祝你好运。我不能。 我甚至找不到买3.0.1的地方,因为MSF已被MS弃用。 我终于决定调用你可以在这里找到的原始c ++代码 http://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.0/ 你会找到一些关于如何从C#调用的例子。 另一个优点是没有限制。 让我知道你是否设法用MSF 3.0.1排序......