System.Data.SQLite BadImageFormatException 与 NHibernate,独立时工作正常
我尝试将 NHibernate 与 SQLite 一起使用, 对于 .NET 4 和 32 位,版本=1.0.74.0。 我使用 64 位 WIN7,但以 x86 模式构建应用程序 (VS2010 Express 中默认)。
当我使用相同的 SQLite 作为独立应用程序时,它工作正常,但是当 我尝试将它与 NHibernate 一起使用,它会抛出 BadImageFormatExcepion
我调试了一点 NHibernate,并在以下语句中抛出异常
System.Type.GetType("System.Data.SQLite.SQLiteConnection, System.Data.SQLite");
有人知道解决方案吗? 是因为我在VS Express中使用默认模式吗? 我需要使用其他方法指定平台吗? 尝试为 sqlite 下载一些其他 dll?
我检查了一些其他答案,所以我得到的最好的答案是 将其添加到我的 app.config 中:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
I tried to use NHibernate with SQLite,
version=1.0.74.0 for .NET 4 and 32 bit.
I use a 64bit WIN7, but build the application in x86 mode
(default in VS2010 express).
When I use the same SQLite as a standalone application it works fine, but when
I try to use it with NHibernate it throws BadImageFormatExcepion
I debugged a bit NHibernate and the Exception is thrown at the folllowing statement
System.Type.GetType("System.Data.SQLite.SQLiteConnection, System.Data.SQLite");
Any chances somebody knows the solution?
Is it because I use default mode in VS Express?
Do I need to specify platform using some other method?
try to download some other dll for sqlite?
I checked some other answers on SO thebest I got was
to add to my app.config this:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果 VS Express 不允许您选择平台,您可以尝试在 .csproj 文件中手动设置。
构建应用程序后,请确保:
另外,请尝试从配置中删除
useLegacyV2RuntimeActivationPolicy
。来自 BadImageFormatException 文档:
If VS express does not allow you to choose a platform you can try setting it up manually in .csproj file
After building your app make sure that:
Also try removing
useLegacyV2RuntimeActivationPolicy
from config.From BadImageFormatException doc: