使用System.Data.Common.DbProviderFactory时,我们在NUnit测试中运行代码时会出现此错误,但在运行常规Web应用程序时则不会 .
Error
System.InvalidCastException:[A] Oracle.DataAccess.Client.OracleParameter无法强制转换为[B] Oracle.DataAccess.Client.OracleParameter . 类型A源自'Oracle.DataAccess,Version = 2.112.1.2,Culture = neutral,PublicKeyToken = 89b483f429c47342',位于'默认'位置'C:\ Windows \ assembly \ GAC_32 \ Oracle.DataAccess \ 2.112.1.2__89b483f429c47342 \ Oracle.DataAccess.dll” . 类型B源自'Oracle.DataAccess,Version = 4.112.1.2,Culture = neutral,PublicKeyToken = 89b483f429c47342',位于'默认'位置'C:\ Windows \ Microsoft.Net \ assembly \ GAC_32 \ Oracle.DataAccess \ v4 .0_4.112.1.2__89b483f429c47342 \ Oracle.DataAccess.dll” .
我们有单元测试项目引用的2.112.1.2程序集,我们甚至尝试“使用特定版本”和“复制本地”,但它只是没有看到它继续从GAC中的较新版本加载DLL .
1 回答
事实证明,dll不会被复制到测试运行器的执行文件夹中 . 幸运的是,您可以指定加载GAC的特定dll .
我们将其添加到单元测试项目中的app.config中 . Note
<add />
元素的type属性中的特定程序集版本