【问题标题】:VS2010 + NUnit failing to load assemblies?VS2010 + NUnit 无法加载程序集?
【发布时间】:2010-08-11 08:04:01
【问题描述】:

我在我正在从事的项目中使用 VS2010、C# 4.0、NHibernate 和 NUnit。在进行数据库测试时,我遇到了一个奇怪的问题。当我运行测试时,nunit-agent.exe 崩溃没有明显原因.. 从那以后我发现当我调试我的测试时,我在 TestFixtureSetup 方法中得到以下异常:

TypeInitializationException:类型 初始化器 'NHibernate.ByteCode.Castle.ProxyFactory' 抛出异常。 无法加载文件或程序集 'Castle.DynamicProxy2, 版本=2.1.0.0,文化=中性, PublicKeyToken=407dd0808d44fbdc' 或 它的依赖项之一。位于 程序集的清单定义确实 与程序集引用不匹配。 (HRESULT 的例外情况: 0x80131040)":"城堡.DynamicProxy2, 版本=2.1.0.0,文化=中性, PublicKeyToken=407dd0808d44fbdc

现在,在我看来,它正在寻找的东西与它找到的相同?

我已经仔细检查,并且在测试项目中引用了程序集。我也尝试阅读参考,但无济于事。有什么想法吗?

UPDATE2:我尝试将所有项目的目标框架更改为 .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; }
  }
}

不起作用(我之前遇到了异常)。有趣的是,两个类的测试使用完全相同的基类,其中包含所有数据库访问代码。..

【问题讨论】:

  • 您的项目是什么 .net 版本? DP2 是什么 .net 版本?
  • 我的项目是 C# 4.0,我从 Castle Project 下载了最新的 DynamicProxy dll。据我所知,它适用于 .net 2.0 运行时。
  • 当 .NET4.0 项目(实际上是 .NET 框架版本)引用针对旧版框架的程序集时,我们也遇到了一些模糊的问题。我们没有花太多时间寻找解决方案;我们只是决定暂时不使用 .NET 4.0。 (但这不会阻止我们使用 C#4.0)。
  • 是的,正如我在上面的 update2 中指出的那样,我尝试以 .net 3.5 为目标,但是,现在我仍然遇到相同的异常(这次仅适用于所有测试)..

标签: c# nhibernate visual-studio-2010 nunit c#-4.0


【解决方案1】:

我解决了这个问题.. 似乎 Nhibernate 正在寻找 DynamicProxy 2.1.0,而我已经引用了 2.1.1..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多