0

我在工作中正在使用的一個項目是使用Fluent Nhibernate和NHibernate將我們的應用程序連接到我們的數據庫。流利的NHibernate沒有與部署的應用程序一起工作,但在Visual Studio中工作

這一個應用程序能夠在Visual Studio中就好在不是「發佈模式」或「調試模式」的時候,但一旦你去,並通過.msi文件安裝應用程序,我們得到這個錯誤:

"The type initializer for 'NHibernate.Cfg.Configuration' threw an exception"

通常當我們得到這個錯誤是因爲一個映射是錯誤的或者可能是連接字符串,但這裏並不是這種情況。就像我上面提到的,該項目在Visual Studio中工作得很好,但不是安裝的版本。 .dll在所有情況下都是相同的版本。

這真的讓我陷入循環,我希望有人在那裏有任何想法或以前遇到過這個問題。

謝謝,讓我知道你是否需要我的任何數據。

更新:

實際上是能夠通過附加到進程來運行(我安裝調試版本)。所以,我能看到內部異常:

"Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)" string.

我們正在使用NHibernate和水晶在我們的應用程序VS2010和報告中有安裝項目中的兩個log4net的引用。兩者都是v1.2.10,但都有不同的公鑰標記。

我相信我解決了這個問題。

就像我剛纔提到的那樣,該項目將在Visual Studio中運行,但不會在安裝時運行。所以我今天早上注意到我檢測到的依賴文件夾中有兩個「log4net.dll」對象。兩個log4net.dlls都是相同的版本「1.2.10」,但都使用不同的公鑰標記。這對我來說似乎很奇怪。我有相同的版本,但都有不同的加密密鑰。

無論如何,我排除了兩個dll中的一個,我再次安裝了該項目,現在它正在運行。我希望不會有任何影響。所以它沒有完全解決,但現在它運作,這就是我所需要的。

兩個鍵參考爲: 692FBEA5521E1304 1B44E1D426115821

感謝NOtherDev和Shane Coutrille您的輸入。我想我不會對這個問題做出回答,因爲這不是理想的解決方案。

+1

你確定所有的依賴關係嗎?像NHibernate和Iesi.Collections一樣?你能記錄InnerException嗎? – NOtherDev 2012-01-31 20:09:47

+0

是的,我剛剛得到了內部異常,這是一個log4net問題。仍然不確定如何解決它。 – CSMHowitzer 2012-02-01 14:36:28

+0

我在其他帖子中看到很多人對此有疑問。我現在正在瀏覽這些帖子,因爲我知道這可能是log4net,這讓我很頭疼。 – CSMHowitzer 2012-02-01 14:41:08

回答

0

公鑰已在1.2.9和1.2.10之間更改(實際上1.2.11有兩個密鑰..)您確定沒有1.2.9和1.2.10?如果它們都是.10,那麼可能有人用可比性原因使用舊密鑰來構建1.2.10。

我們發現這個問題的唯一解決方案是找到第三方工具的版本,它們同意使用哪個公共密鑰版本的log4net。到目前爲止,我們只有Windsor 3出現過這個問題(似乎使用1.2.11新公鑰),但是我期望這個問題在我們經歷一段時期後會變得很常見,因爲有些項目會升級到1.2.11(新密鑰)而其他人仍然使用1.2.9或1.2.10或1.2.11舊密鑰。

+0

是的,我100%確定我現在正在查看安裝項目。我希望它是我有2個版本的情況下,但都是相同的。我們有使用log4net v1.2.10和CrystalDecisions.ReportAppServer.Prompting的NHibernate v2.1.2.4000,它使用的是log4net v1.2.10。兩個log4net都在安裝項目中,一個在GAC中,另一個在我們設置的庫文件夾中。兩者都有不同的公鑰標記。 – CSMHowitzer 2012-02-01 14:48:10

+0

哦,我不得不使用水晶的吊;;) – 2012-02-01 15:30:06

+0

哈哈,是的。感謝遺留應用程序,我們必須。 – CSMHowitzer 2012-02-01 19:33:11

1

我有同樣的問題,但可以通過以下步驟來解決這個問題: *刪除NHibernate和流利的NHibernate和iesiCollection等的所有引用 *從城市駱駝添加在Visual Studio 2012 FluentNHibernate的一個新的參考,它會自動添加像NHibernate等所有的依賴關係。 *這種方式組件不會衝突。

相關問題