2010-08-11 80 views
3

在一個項目中使用VS2010,C#4.0,NHibernate和NUnit進行數據庫測試時,我遇到了一個奇怪的問題。當我運行我的測試時,nunit-agent.exe崩潰沒有明顯的原因..因爲我已經然後發現,當我調試我的測試中,我得到的TestFixtureSetup方法以下異常:VS2010 + NUnit無法加載程序集?

TypeInitializationException:類型 初始化爲 「NHibernate.ByteCode.Castle.ProxyFactory」 扔一個例外。 無法加載文件或程序集 'Castle.DynamicProxy2, Version = 2.1.0.0,Culture = neutral, PublicKeyToken = 407dd0808d44fbdc'或 其依賴項之一。位於 程序集清單定義 與程序集引用不匹配。 (從HRESULT異常: 0x80131040) 「:」 Castle.DynamicProxy2, 版本= 2.1.0.0,文化=中立, 公鑰= 407dd0808d44fbdc

現在,在我看來,它的尋找是相同的到它找到的那個?

我已經doublechecked,並在測試項目中引用程序集..我也嘗試讀取參考,但無濟於事。任何想法?

UPDATE2:我試圖改變目標框架.NET 3.5我的所有項目,現在所有測試失敗,上述錯誤..

UPDATE:一些測試工作,別人不..我有一個客戶類:

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版本是你的項目?什麼.net版本是DP2? – Simon 2010-08-11 08:17:02

+0

我的項目是C#4.0,我從Castle Project下載了最新的DynamicProxy dll ..據我所知,它是用於.net 2.0運行時.. – 2010-08-11 09:09:26

+0

我們遇到了一些模糊的問題以及.NET4.0項目(實際上,.NET框架版本)引用了針對舊版本框架的程序集。 我們沒有花太多時間尋找解決方案;我們現在決定暫時不使用.NET 4.0。 (雖然這不會阻止我們使用C#4.0)。 – 2010-08-11 09:24:21

回答

2

我解決了這個問題。似乎Nhibernate正在尋找DynamicProxy 2.1.0,而我參考了2.1.1 ..