我使用mspec进行测试,并在测试中使用SQLite x86进行NHiernate安装。问题是,当我使用mspec r#runner运行我的测试时,一切正常,但是从控制台运行它会发现一个错误,它无法找到sqlite dll。
我的规范项目配置:
.net 4
x86(使用x86版本的sqlite)
System.Data.SQLite,Version = 1.0.64.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139 mspec,Version = 0.3.0.0,Culture = neutral,PublicKeyToken = null,target runtime:v4.0.30319,target:x86
MSpec是从源代码构建的。在Reflector中,mspec.exe显示为为x86构建 - 这似乎适合我的设置,并且所述测试使用r#runner运行正常。
NHibernate.HibernateException:无法从NHibernate.Driver.SQLite20Driver,NHibernate,Version = 2.1.2.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4创建驱动程序。 ---> System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> NHibernate.HibernateException:找不到程序集System.Data.SQLite中的IDbCommand和IDbConnection实现。确保程序集System.Data.SQLite位于应用程序目录或全局程序集缓存中。如果程序集位于GAC中,请使用应用程序配置文件中的元素指定程序集的全名。 at NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName,String connectionTypeName,String commandTypeName) 在NHibernate.Driver.SQLite20Driver..ctor()
有谁知道如何解决这个问题?
提前感谢来自多云维也纳的问候,
克里斯
答案 0 :(得分:7)
使用fuslogvw.exe我发现了accutal错误(感谢提示;): “拒绝针对v2.0.50727构建的IJW模块,因为它可以在此过程中加载到另一个运行时。”
添加mspec.exe.config,如:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true" ></startup>
</configuration>
解决了这个问题,现在我的测试运行预期。
谢谢&amp;问候,
克里斯