【发布时间】: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