Log4Net和.NET 4.0 RC

vzc*_*czc 27 .net log4net .net-4.0

我尝试使用.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)]
Run Code Online (Sandbox Code Playgroud)

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

Nat*_*hot 22

这是必需的,因为.NET 4.0添加了Level 2 Security-Transparent Code(这是新的默认代码)并取消了Code Access Security.1级安全透明代码仍然存在兼容性,但正如您所发现的那样,必须指定.

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