【问题标题】:LuaInterface - Compiling under .Net 3.5 / .Net 4.0 FileLoadExceptionLuaInterface - 在 .Net 3.5 / .Net 4.0 FileLoadException 下编译
【发布时间】:2011-05-05 18:11:35
【问题描述】:

我的一个项目使用了 LuaInterface。我已经开始将它从 XNA 迁移到 OpenTX,并在 .Net 4.0 下重写。

我开始移动我的 Lua 类,发现调试时出现异常 (FileLoadException)

Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

当我重建 LuaInterface 时,我将 .Net Framework 的属性从 .Net 2.0 更改为 .Net 4.0(以及它的客户端模式)和 .Net 3.5。

这两个设置都给我一个错误,说明它仍然使用 2.0 构建。

我在 StackOverflow 和 MSDN 上尝试了许多解决方案,声明设置 app.config 甚至更改应用程序池出于某些不敬虔的原因...

无论如何,我尝试的每个解决方案都失败了,说明它仍然使用 2.0。

我使用了“IL DASM”,它声明它是使用 3.5/4.0 构建的。

关于发生了什么的任何想法?整天都在搞这个。我只是天真地认为更改单个设置就可以解决我的问题吗?

任何帮助将不胜感激。

【问题讨论】:

  • 如果有人正在寻找一种方法来复制问题,只需编写一个类来实例化 LuaInterface 中的 Lua 类。发生这种情况时会引发异常。
  • 之前看过Lua511源码。它的行为很奇怪,有时我无需任何更改就能成功构建它,有时会出现一些“无法将 转换为 ”的异常。不过,我看不出这会有什么影响,看看原始错误是如何由 LuaInterface 库引起的。我会玩它,看看会发生什么......

标签: c# .net-4.0 lua luainterface


【解决方案1】:

当我尝试将 LUA 代码与我的 .NET4.0 项目集成时,我遇到了同样的问题。我没有重建 .dll,因为我无法从他们的存储库中签出 LuaInterface 项目文件。无论如何,我为我的小型测试应用程序重写了 app.config,到目前为止它似乎可以工作。

需要重写的xml行是:

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>

我无法告诉你这种方法有多强大,因为我只尝试了一些简单的东西,比如读/写字符串、doFile 等。

希望它也对你有用。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 我已经尝试了第二种解决方案。第一个我什至不确定是否相关,看看我如何制作一个 win32 应用程序/库。
    猜你喜欢
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多