2010-05-25 134 views
3

當我將解決方案更新到.net 4.0時,我遇到了log4net問題,然後我下載了它的源代碼並構建了log4net並將其定位到.net 4.0並在我的項目中使用它。log4net和.net Framework 4.0

最初,當我引用運行時間爲2.0的log4net時,它編譯並運行應用程序,但日誌不起作用。

現在,當我跑我的log4net的項目針對.NET 4.0我的錯誤"The type initializer for 'Log4NetTest.TestLog' threw an exception."

任何想法如何解決這個問題?

編輯:這是在內部異常:

 
InnerException: System.TypeLoadException Message=Inheritance security rules violated while overriding member: 
'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. 
Security accessibility of the overriding method must match the security accessibility of the method being overriden. 
    Source=log4net 
    TypeName=log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) 
    StackTrace: 
    at log4net.Repository.Hierarchy.Hierarchy..ctor(ILoggerFactory loggerFactory) 
    at log4net.Repository.Hierarchy.Hierarchy..ctor() in C:\src\Repository\Hierarchy\Hierarchy.cs:line 150 
+1

看嵌入異常的是什麼 - 看的類型初始值是什麼例外,這將幫助你診斷它。 – 2010-05-25 10:07:27

+0

喬恩,我增加了內部異常的問題 – Aneef 2010-05-25 10:24:16

+0

嗨, 我固定它通過添加[大會:System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)到log4net的集信息,但現在它不記錄 – Aneef 2010-05-25 10:31:30

回答

2

這爲我工作:

在log4net的源代碼,添加[SecurityCritical]屬性到Util.ReadOnlyPropertiesDictionary.GetObjectData方法和構建。

您可能還需要做其他一些事情來讓它爲4.0框架構建。

看到這個職位:

Weird override problem with Fluent NHibernate and .NET 4

4

在log4net的源代碼,添加[SecurityCritical]屬性到 Util.ReadOnlyPropertiesDictionary.GetObjectData方法並構建。

剛剛編譯目標框架4.0(非客戶端)的源代碼。版本1.2.11的源代碼已經包含這個屬性,但一定要使用'NET_4_0'作爲編譯器參數。否則,該屬性將不會被添加。

+1

我從Apache.org下載的項目僅在調試配置中定義了NET_4_0 。必須將其手動添加到Release。 – myforums 2012-05-21 18:56:08

+1

我剛剛在1.2.11版本中添加了NET_4_0以進行發佈配置,並且工作正常!謝謝 – sergtk 2012-11-07 22:44:59

0

我已經通過從Visual Studio軟件包管理器更新Log4Net軟件包解決了類似的問題。

感謝, Khachatur

0

我加入[裝配固定它:System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)] 到log4net的集信息,但現在它不記錄

+0

添加此作爲答案,因爲我不能將我的評論標記爲答案 – Aneef 2014-10-14 06:41:07