2010-02-17 11 views
27

.Log4Net ve ben RC .NET 4.0 kullanarak Log4Net günlüğü çerçevesinde bağımlı bir projeyi derlemek için çalıştı ve bazı sorunlarla karşılaştı .NET 4.0 RC

Kutunun dışında (hedef yalnızca .NET 4.0 olarak değiştiriliyor) artık çalışmıyor, bir güvenlik istisnası atılıyor. 'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData (System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)': üyenin kıldı ederken

Kalıtım güvenlik kuralları ihlal etti.

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)] 
: ağır basan yöntemin Güvenlik erişilebilirlik (AssemblyInfo.cs) log4net montaj için aşağıdaki satırı ekleyerek çözüldü

Bu varlık yönteminin ait güvenlik erişilebilirliğini aynı olmalıdır

Birisi bunun neden gerekli olduğunu açıklayabilir mi ve bu şekilde yapmanın alternatifleri var mı? Bu Log4Net'in nasıl yazıldığına veya başka bir şeye bağlı mı?

cevap

22

Bu, .NET 4.0 Level 2 Security-Transparent Code'u (yeni varsayılan değer) eklediğinden ve Code Access Security ile birlikte çalıştığı için gereklidir. Level 1 Security-Transparent Code hala uyumluluk için var, ancak bulunduğunuz gibi belirtilmesi gerekiyor.

Bunu Log4Net yazılır nasıl ilişkili olduğunu doğrudur. Log4Net kodunu güncellemek dışında bulduğunuz çözümün bir alternatifi yok - ya da farklı bir kayıt çözümüne geçin :)