Подтвердить что ты не робот

Log4Net и .NET 4.0 RC

Я попытался скомпилировать проект, зависящий от структуры ведения журнала Log4Net, с помощью .NET 4.0 RC и столкнулся с некоторыми проблемами.

Из коробки (просто изменив цель на .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 или что-то еще?

4b9b3361

Ответ 1

Это необходимо, потому что .NET 4.0 добавил уровень безопасности-прозрачный код уровня 2 (который является новым по умолчанию) и покончил с Безопасность доступа к коду. Уровень 1 Security-Transparent Code по-прежнему существует для совместимости, но, как вы нашли, должен быть указан.

Вы правы, что это связано с тем, как записывается Log4Net. На самом деле нет альтернативы найденному вами решению, кроме как обновить код Log4Net, или переключиться на другое решение для ведения журнала:)