2013-02-19 43 views
2

我在使用Firebird数据库的C#.NET 4.0 dll(运行存根/测试应用程序)时遇到了一个奇怪的问题。设置似乎是正确的,但在火鸟(2.5.2我认为)客户端/ DLL /提供商需要抛出一个异常,我总是得到如下:获取TypeLoadException而不是Firebird数据库特定异常

失败:System.TypeLoadException:未能加载类型程序集'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'中的'System.Runtime.CompilerServices.ExtensionAttribute'。

所以,举例来说,如果我改变我的连接字符串不指向我的数据库文件,它将给这个例外,而不是更相关的事情。无论是否从Visual Studio 2010调试它,或者我是否手动运行EXE,都会发生这种情况。

还有另一个人工作在相同的代码谁没有这个问题,所以它似乎不会是代码相关。

有人看到或听说过类似的东西吗?不得不猜测什么是例外试图告诉我。

更新:所以它看起来好像一切都是x86,所以它看起来不像是一点点不匹配。我已经检查并确认我有适当的提供者版本(例如NETProvider-3.0.2-Net40)。我仍然得到TypeLoadException。

作为参考,如果它启发任何人,我运行Windows XP 32位。另一个得到相关/真实例外的人是在Windows 7上(可能是64位)。

+0

你有你的相比火鸟客户端安装到同事的,有没有什么区别?一个要查找的文件是'firebird.msg',这就是FB错误消息存储的位置(应该与客户端dll位于相同的目录中),你有吗? – ain 2013-02-19 23:28:31

回答

0

当您的比特位置不匹配时,通常会出现此错误。确保您的Firebird驱动程序(以及所有依赖的下游DLL)和您的可执行文件都设置为相同的位数。

+0

现在你提到它,那很可能是问题所在。我明天再查。 – DAG 2013-02-20 00:06:56

2

问题是,您正在.NET 4系统上使用.NET 4.5版本的Firebird .NET提供程序。微软将.NET 4.5作了一个原地更新,保留了4.0.0.0版本,同时将System.Runtime.CompilerServices.ExtensionAttribute改为mscorlib,以便能够在mscorlib中使用扩展方法。当.NET 4.5编译版本在.NET 4上运行时,它无法找到该类,因为它位于与预期不同的库中。

底线:确保你从http://www.firebirdsql.org/en/net-provider/

该信息在this blog还描述安装.NET版本4(NETProvider-3.0.2.0-NET40.7z)(链接到谷歌的缓存,因为这博客目前折断; original link

相关问题