c# - 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(流包)
解决方案
推荐阅读
- xamarin.forms - 将 PDF 文档打印到 esc/pos 热敏打印机
- android - 如何在低亮度下使用 Android 中的 Canny 检测边缘并忽略阴影?
- java - 使用 BufferedReader 读取大型文本文件,打印每一行会减慢进程的速度有多严重?
- c# - TreeView 复制根节点,尽管 Nodes 数组中有一个根节点
- php - PHP strtotime 似乎在一年的第一周返回了错误的结果(没有逗号)
- r - 更改数据框中的数据类型
- python - 如何将十六进制值按原样写入文件?
- jquery - 根据选择选项自动填充文本框
- bash - bash脚本if语句问题
- python - 如何将变量的值传递到另一个文本文件?