VS2010 + NUnit 无法加载程序集?

3
我正在使用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,现在所有测试都失败,并显示上述错误。
更新:一些测试可以正常工作,而另一些则不能。我有一个客户类:
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; }
  }
}

无效(我仍然得到之前的异常)...有趣的是,两个类的测试使用完全相同的基类,该基类包含所有数据库访问代码。


1
你的项目使用的是哪个 .NET 版本?DP2 使用的是哪个 .NET 版本? - Simon
我的项目是C# 4.0,我从Castle Project下载了最新的DynamicProxy dll。据我所知,它适用于.net 2.0运行时。 - Morten Jacobsen
当一个.NET4.0项目(确切地说,是.NET框架版本)引用那些针对旧版本框架的程序集时,我们也遇到了一些模糊问题。 我们没有花太多时间寻找解决方案; 我们只是决定暂时不使用.NET 4.0。(这并不妨碍我们使用C#4.0)。 - Frederik Gheysels
是的,正如我在上面的更新2中指出的那样,我尝试将目标设置为.NET 3.5,但现在我仍然遇到了相同的异常(这次是所有测试都有)... - Morten Jacobsen
1个回答

2

我解决了这个问题。似乎Nhibernate在寻找DynamicProxy 2.1.0时,我引用的是2.1.1版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接