2010-03-10 20 views
8

我正在使用1.0 RTM的Fluent Nhibernate,3.0版本的NHibernate。爲了做到這一點,我需要將以下添加到我的config文件:如何讓我的testassembly.dll.config中的NUnit尊重我的bindingRedirect?

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="NHibernate" culture="neutral" publicKeyToken="aa95f207798dfdb4"/> 
    <bindingRedirect oldVersion="2.1.0.4000" newVersion="3.0.0.1001"/> 
    </dependentAssembly> 
</assemblyBinding> 

這運行與TestDriven.net插件的集成測試時的偉大工程,但在NUnit的GUI或失敗控制檯運行器出現以下錯誤:

System.IO.FileLoadException:無法加載文件或程序集'NHibernate,Version = 2.1.0.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4'或其某個依賴項。定位的程序集清單定義與程序集引用不匹配。 (來自HRESULT的例外:0x80131040)

如何讓NUnit尊重我的bindingRedirect併成功運行我的集成測試?

回答

3

關鍵是把它放在正確的.config文件中。請參閱Does redirecting assembly binding work for unit testing with a test runner?

另一種方法是針對NHibernate 3.0編譯fluent-nhibernate。如果有編譯錯誤,請詢問開發團隊和/或分發源代碼並進行編譯。

+2

那麼,什麼是正確的.config文件? –

+0

@FrancoisBotha請點擊鏈接 –

+3

這不符合StackOverflow的精神。 http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers –

11

我在CI服務器上運行nunit時有類似的問題(竹,具體而言)。我的理解是,如果nunit正在自己的進程空間中運行(就像你剛剛從命令行運行一樣),那麼它可以正確讀取程序集綁定重定向。但是,如果CI服務器在CI服務器的進程空間內運行nunit,則它會嘗試從父進程獲取配置。爲確保nunit在自己的進程空間中運行,請添加命令行選項/process:multiple。至少,這對我來說很有用,所以nunit會正確地找到重定向綁定。

TL; DR:使用命令行選項/process:multiple

+0

注意:它也適用於/ process:分離 –

相關問題