首页 > 解决方案 > CreateInstanceAndUnwrap 无法在新的 appdomain 中加载程序集

问题描述

我们在使用 createInstanceFromUnWrap 方法在新的应用程序域中加载程序集时遇到了一些问题。

我为此问题(PFB)添加了实际代码和内部异常消息。但我们怀疑此错误与程序集加载方法无关。请让我知道如何获取 appdomain 创建实例的异常以及此问题的解决方案。

var domainSetup = new AppDomainSetup   {
            CachePath = cache,
            ShadowCopyDirectories = drivers,
            ShadowCopyFiles = "true",
            ConfigurationFile = 
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile,
            ApplicationBase = AppDomain.CurrentDomain.BaseDirectory
        };

domain = AppDomain.CreateDomain(domainName, 
AppDomain.CurrentDomain.Evidence, domainSetup);

Drivers = (T)domain.CreateInstanceFromAndUnwrap(dllPath, typeof(T).FullName);

错误 YYYYYYYY 错误异常:System.TypeInitializationException:“NLog.LogManager”的类型初始化程序引发了异常。---> System.IO.FileLoadException:加载此程序集会产生与其他实例不同的授权集。(来自 HRESULT 的异常:0x80131401)在 NLog.LogManager..cctor() 的 NLog.LogFactory..ctor() --- 内部异常堆栈跟踪的结束 --- 在 YYYYYYYY.YYYYYYYY 的 NLog.LogManager.GetCurrentClassLogger()。 YYYYYYYY.YYYYYYYY..ctor()

在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck)在 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,Boolean skipCheckThis,Boolean fillCache,StackCrawlMark& stackMark)在 System.Activator.CreateInstance (类型类型,布尔非公共)在 System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr,Binder binder,Object[] args,CultureInfo 文化,Object[] activationAttributes,StackCrawlMark 和 stackMark)在 System.Activator.CreateInstance(类型类型,BindingFlags bindingAttr,Binder活页夹,Object[] args,CultureInfo 文化,Object[] activationAttributes) 在 System.Activator.CreateInstanceFromInternal(String assemblyFile, String typeName, Boolean ignoreCase,BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo 文化, Object[] activationAttributes, Evidence securityInfo) at System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo文化,Object[] activationAttributes) 在 System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Object[] activationAttributes) 在 System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) 在 System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName ) 在 YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY`1..ctor() 在 YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(String tempDir) 在 YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(流包)Object[] args,CultureInfo 文化,Object[] activationAttributes,证据 securityInfo) 在 System.Activator.CreateInstanceFrom(String assemblyFile,String typeName,Boolean ignoreCase,BindingFlags bindingAttr,Binder binder,Object[] args,CultureInfo 文化,Object[] activationAttributes ) 在 System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) 在 System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Object[] activationAttributes) 在 System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) 在 YYYYYYYY.YYYYYYYY。 YYYYYYYY.YYYYYYYY.YYYYYYYY`1..ctor() at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(String tempDir) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(流包)Object[] args,CultureInfo 文化,Object[] activationAttributes,证据 securityInfo) 在 System.Activator.CreateInstanceFrom(String assemblyFile,String typeName,Boolean ignoreCase,BindingFlags bindingAttr,Binder binder,Object[] args,CultureInfo 文化,Object[] activationAttributes ) 在 System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) 在 System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Object[] activationAttributes) 在 System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) 在 YYYYYYYY.YYYYYYYY。 YYYYYYYY.YYYYYYYY.YYYYYYYY`1..ctor() at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(String tempDir) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(流包)System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfoculture, Object[] activationAttributes) at System.Activator.CreateInstanceFrom(String assemblyFile, String typeName) 的证据 securityInfo) , Object[] activationAttributes) at System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) at System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY`1..ctor() at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(String tempDir) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(流包)System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfoculture, Object[] activationAttributes) at System.Activator.CreateInstanceFrom(String assemblyFile, String typeName) 的证据 securityInfo) , Object[] activationAttributes) at System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) at System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY`1..ctor() at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(String tempDir) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(流包)Object[] args, CultureInfoculture, Object[] activationAttributes) at System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Object[] activationAttributes) at System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) at System.AppDomain.CreateInstanceFromAndUnwrap (字符串 assemblyName,字符串 typeName)在 YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY`1..ctor() 在 YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(String tempDir) 在 YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(Stream包裹)Object[] args, CultureInfoculture, Object[] activationAttributes) at System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Object[] activationAttributes) at System.AppDomain.CreateInstanceFromAndUnwrap(String assemblyName, String typeName) at System.AppDomain.CreateInstanceFromAndUnwrap (字符串 assemblyName,字符串 typeName)在 YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY`1..ctor() 在 YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(String tempDir) 在 YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(Stream包裹)CreateInstanceFromAndUnwrap(String assemblyName, String typeName) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY`1..ctor() at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(String tempDir) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(流包)CreateInstanceFromAndUnwrap(String assemblyName, String typeName) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY`1..ctor() at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(String tempDir) at YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY.YYYYYYYY(流包)

标签: c#mefappdomain

解决方案


推荐阅读