与EntLib 5.0和.NET 4“,而重写成员继承安全规则违反” [英] 'Inheritance security rules violated while overriding member' with EntLib 5.0 and .NET 4

查看:263
本文介绍了与EntLib 5.0和.NET 4“,而重写成员继承安全规则违反”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用EntLib 5.0与.NET 4这是工作,但现在我用的 ILMerge 以合并所有的DLL在一个可再发行组件.dll文件。一切正常,但EntLib5。当我试图得到一个记录器,我得到这个异​​常:

I'm using EntLib 5.0 with .NET 4. It was working, but now I've used ILMerge in order to merge all the dlls in one redistributable .dll. Everything works but EntLib5. When I try to get a logger, I get this exception:

System.TypeLoadException was unhandled by user code
  Message=Inheritance security rules violated while overriding member: 'Microsoft.Practices.Unity.ResolutionFailedException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.
  Source=My.Common.Compacted
  TypeName=Microsoft.Practices.Unity.ResolutionFailedException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)
  StackTrace:
       at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides)
       at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable`1 resolverOverrides) in :line 0
       at Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides) in :line 0
       at Microsoft.Practices.Unity.UnityContainerExtensions.Resolve[T](IUnityContainer container, ResolverOverride[] overrides) in :line 0
       at Microsoft.Practices.Unity.UnityContainerExtensions.AddNewExtension[TExtension](IUnityContainer container) in :line 0
       at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Unity.UnityContainerExtensions.AddNewExtensionIfNotPresent[TExtension](IUnityContainer container) in :line 0
       at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.Unity.UnityContainerConfigurator..ctor(IUnityContainer container) in :line 0
       at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer.CreateDefaultContainer(IConfigurationSource configurationSource) in :line 0
       at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer.CreateDefaultContainer() in :line 0
       at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer.SetCurrentContainerIfNotSet() in :line 0
       at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer.get_Current() in :line 0
       at My.Common.Diagnostics.Logger..ctor(Boolean failSilently) in D:\TFS Source\My.COMMON\Framework4.0\My.Common\Diagnostics\Logger.cs:line 35
       at My.Common.Tests.LoggerTest.LoggerTestMethod() in D:\TFS Source\My.COMMON\Framework4.0\My.Common.Tests\LoggerTests.cs:line 21
  InnerException: 

我在这里的SO阅读该异常来自.NET4,因为现在它的编码安全性方面更为严格,但我能做些什么?下载EntLib 5源$ C ​​$ c和自己修复?

I've read here in SO that that exception comes from .NET4 because now it's more strict in terms of coding security, but what can I do? download the EntLib 5 source code and fix it myself?

有没有什么办法来禁用该检查?

Is there any way to disable that check?

我已经合并的文件中的顺序,也许是错误的顺序:

I've merged the files in this order, maybe it's the wrong order:

"$(TargetDir)My.Common.dll" 
"$(TargetDir)Microsoft.Practices.ServiceLocation.dll" 
"$(TargetDir)Microsoft.Practices.Unity.dll" 
"$(TargetDir)Microsoft.Practices.Unity.Interception.dll" 
"$(TargetDir)Microsoft.Practices.EnterpriseLibrary.Common.dll" 
"$(TargetDir)Microsoft.Practices.EnterpriseLibrary.Logging.dll"

干杯。

推荐答案

修正。

HTTP://entlib.$c$cplex.com/discussions/245946

这篇关于与EntLib 5.0和.NET 4“,而重写成员继承安全规则违反”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆