我正在使用VS2010、C# 4.0、NHibernate和NUnit开发一个项目。在进行数据库测试时,我遇到了一个奇怪的问题。当我运行我的测试时,nunit-agent.exe无缘无故地崩溃了。后来我发现,当我调试我的测试时,在TestFixtureSetup方法中会出现以下异常:
TypeInitializationException: 'NHibernate.ByteCode.Castle.ProxyFactory'的类型初始化器引发了一个异常。无法加载文件或程序集'Castle.DynamicProxy2,Version=2.1.0.0,Culture=neutral,PublicKeyToken=407dd0808d44fbdc'或其其中之一的依赖项。所定位的程序集清单定义与程序集引用不匹配。(HRESULT异常来自于:0x80131040):"Castle.DynamicProxy2,Version=2.1.0.0,Culture=neutral,PublicKeyToken=407dd0808d44fbdc"
现在,对我来说,它正在寻找的东西与它找到的是完全相同的?
我已经仔细检查了测试项目中的程序集引用。我还尝试重新添加引用,但没有效果。有什么想法吗?
更新2:我尝试将所有项目的目标框架更改为.NET 3.5,现在所有测试都失败,并显示上述错误。
更新:一些测试可以正常工作,而另一些则不能。我有一个客户类:
TypeInitializationException: 'NHibernate.ByteCode.Castle.ProxyFactory'的类型初始化器引发了一个异常。无法加载文件或程序集'Castle.DynamicProxy2,Version=2.1.0.0,Culture=neutral,PublicKeyToken=407dd0808d44fbdc'或其其中之一的依赖项。所定位的程序集清单定义与程序集引用不匹配。(HRESULT异常来自于:0x80131040):"Castle.DynamicProxy2,Version=2.1.0.0,Culture=neutral,PublicKeyToken=407dd0808d44fbdc"
现在,对我来说,它正在寻找的东西与它找到的是完全相同的?
我已经仔细检查了测试项目中的程序集引用。我还尝试重新添加引用,但没有效果。有什么想法吗?
更新2:我尝试将所有项目的目标框架更改为.NET 3.5,现在所有测试都失败,并显示上述错误。
更新:一些测试可以正常工作,而另一些则不能。我有一个客户类:
public class Customer : IEntity<string>
{
private readonly string id;
public virtual string Id
{
get { return id; }
}
public virtual string Name { get; set; }
public virtual Address Address { get; set; }
}
测试运行非常顺利。但是对于我的产品类的测试:
public class Product : IEntity<string>
{
private readonly string id;
public virtual string Name { get; set; }
public virtual decimal Price { get; set; }
public virtual string Id
{
get { return Id; }
}
}
无效(我仍然得到之前的异常)...有趣的是,两个类的测试使用完全相同的基类,该基类包含所有数据库访问代码。