我正在尝试将我的 .net 解决方案的 Git 存储库拉到同一台机器上的另一个文件夹中(只是为了确保它有效)。
在我使用创建IfxConnection
s 的项目中,当我尝试创建一个新的时,IfxConnection
我得到一个DllNotFoundException
,它由 IBM Informix 驱动程序抛出。
我收到的消息是“无法加载 DLL 'db2locale.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)”并且堆栈跟踪(回读到构造函数调用)是:
at IBM.Data.Informix.UnsafeNativeMethods.IfxInteropAPP.sqloGetNormalizedLangFromLangId(Int16 lcid)
at IBM.Data.Informix.UnsafeNativeMethods.IfxLocale.sqloGetNormalizedLangFromLangId(Int16 lcid)
at IBM.Data.Informix.IfxResource.GetMsgPath(CultureInfo cultureInfo, String szResFileName)
at IBM.Data.Informix.IfxResource..ctor(CultureInfo cultureInfo, String szResFileName, String szMsgPath)
at IBM.Data.Informix.IfxResource..ctor(CultureInfo cultureInfo, String szResFileName)
at IBM.Data.Informix.IfxResources.GetResource(CultureInfo cultureInfo)
at IBM.Data.Informix.IfxResources.GetString(CultureInfo cultureInfo, String stringID)
at IBM.Data.Informix.Res.GetString(CultureInfo culture, String name)
at IBM.Data.Informix.ODC.InvalidArgument()
at IBM.Data.Informix.IfxConnPool.ReplaceConnectionStringParms(IfxConnection connection, String szValue, IfxConnSettings& pSettings, IfxConnSettingsInternal& pSettingsInternal, Boolean bAttach)
at IBM.Data.Informix.IfxConnection.set_ConnectionString(String value)
at IBM.Data.Informix.IfxConnection..ctor(String connectionString)
问题是,我的代码/项目没有直接引用这个 dll。我的代码IBM.Data.Informix
在本地机器路径上引用C:\Program Files\IBM\IBM DATA SERVER DRIVER\bin\netf40_32\IBM.Data.Informix.dll
,就像在我的所有其他项目中一样,以及在从中克隆了该存储库的存储库中。从存储库打开原始项目不会产生错误。
任何人都可以让我了解为什么会发生此错误以及我可以做些什么来解决它?
顺便说一句,IBM Informix 驱动程序似乎在后台使用了大量DB2 连接代码,以至于在使用设计器生成的数据集的其他项目中,我只能使用 DB2 连接器类型连接到我的 Informix 数据库. 因此是 DB2 标记,尽管它与 DB2 相关的原因还不是很明显。