27 votes

Log4Net et .NET 4.0 RC

J'ai essayé de compiler un projet dépend de la Log4Net de journalisation à l'aide .NET 4.0 RC et a rencontré quelques problèmes.

Hors de la boîte (en changeant simplement la cible .NET 4.0), il ne fonctionne plus, une sécurité exception est levée.

L'héritage des règles de sécurité violé tout en substituant membre: 'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, Système.Moment de l'exécution.La sérialisation.StreamingContext)'. La sécurité et l'accessibilité de la méthode de remplacement doit correspondre à la la sécurité et l'accessibilité de la méthode être

Ceci a été résolu en ajoutant la ligne suivante à la log4net assemblée(en AssemblyInfo.cs):

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

Quelqu'un peut m'expliquer pourquoi cela est nécessaire et il y a des solutions de rechange à le faire de cette façon? Est-ce lié à la façon dont Log4Net est écrit ou quelque chose d'autre?

22voto

Nate Pinchot Points 2380

Cela est nécessaire parce que .NET 4.0 ajouté de Niveau 2 de Sécurité-Code Transparent (qui est la nouvelle valeur par défaut) et il a supprimé le Code d'Accès de Sécurité. Le niveau 1 de Sécurité-Code Transparent est toujours là pour la compatibilité, mais, comme vous l'avez trouvé, doit être spécifiée.

Vous avez raison que c'est lié à la façon dont Log4Net est écrit. Il n'y a vraiment pas d'alternative à la solution que vous avez trouvé d'autre que de mettre à jour le Log4Net de code ou de passer à une autre solution d'enregistrement :)

1voto

Nachbars Lumpi Points 946

Cette erreur est connue comme https://issues.apache.org/jira/browse/LOG4NET-347 et il semble avoir été corrigé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X