Log4Net和.NET 4.0 RC

时间:2010-02-17 10:35:12

标签: .net .net-4.0 log4net

我尝试使用.NET 4.0 RC编译依赖于Log4Net日志框架的项目,并遇到了一些问题。

开箱即用(只是将目标更改为.NET 4.0),它不再有效,抛出安全异常。

  

违反了继承安全规则   覆盖成员时:   “log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,   System.Runtime.Serialization.StreamingContext)”。   安全可访问性   重写方法必须匹配   该方法的安全可访问性   是

通过将以下行添加到log4net程序集(在AssemblyInfo.cs中)解决了这个问题:

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]

有人可以解释为什么这是必需的,有没有替代方法这样做?这与Log4Net的编写方式或其他内容有关吗?

2 个答案:

答案 0 :(得分:22)

这是必需的,因为.NET 4.0添加了Level 2 Security-Transparent Code(这是新的默认设置)并取消了Code Access Security。 <{3}}仍然存在兼容性,但正如您所发现的那样,必须指定。

你是正确的,它与Log4Net的编写方式有关。 除了更新Log4Net代码 - 或切换到不同的日志记录解决方案之外,除了找到的解决方案之外别无选择:)

答案 1 :(得分:1)

此错误称为https://issues.apache.org/jira/browse/LOG4NET-347,似乎已修复。