显示表单时出现以下异常:
InvalidOperationException未处理
混合模式程序集是针对运行时的版本“v2.0.50727”构建的,如果没有其他配置信息,则无法在4.0运行时加载。
alt text http://img69.imageshack.us/img69/2599/captureya.png
不知道为什么这不起作用。有什么帮助吗?
答案 0 :(得分:0)
我还没有看到LoginForm的代码。但我认为您需要设置app.config标志以回退到.NET 2.0时代绑定...
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
首先,什么是混合模式组件?一个 混合模式组件是一个组件 包含托管(CIL)和 非托管(机器语言)代码。 因此,他们无法携带 其他CPU指令集,就像 正常的C和C ++程序和 库。
接下来,为什么要使用它们?首要的 混合模式组件的目的是 作为“胶水”,例如使用C ++库 class作为托管的基类 类。这允许托管类 允许扩展非托管方法 托管代码是多态的 关于现有的非托管 功能。这非常有用 很多情况。然而,作为一些东西 这样做涉及扩展C ++ 类,它需要编译器 了解C ++编译器ABI的全部内容 (名称修改,虚函数表 生成和放置,例外 行为),从而有效 需要本机代码。如果基地 class在一个单独的.dll中,这个 还需要混合模式 程序集将本机.dll列为 依赖,以便本机库 也是在装配时加载的 加载。
混合模式的另一件事 程序集支持的能力 导出新的C函数使其他 程序可以通过LoadLibrary()来实现 assembly和GetProcAddress 导出C函数。
这两种功能都需要 那个共享的库加载器 平台支持Portable Executable (PE)文件,因为程序集是PE 文件。如果共享库加载器 支持PE文件,然后加载器即可 确保装配时 加载,所有列出的依赖库 也加载(案例1)或那 原生应用程序将能够加载 汇编就好像它是一个本机DLL 并解决DLL入口点 它
答案 1 :(得分:0)
我遇到了这个问题,尝试了上面的答案但是没有用。
经过多次阅读和试错,没有发现任何有效的东西,我注意到我已经导入了Mysql dll并将它们添加到属性中。删除导入语句后,它工作了。
我知道它正在删除import语句,因为我在我尝试的每次更改之间进行了测试。
希望能有所帮助。