从 AppDomain 创建实例时程序集未解析
Posted
技术标签:
【中文标题】从 AppDomain 创建实例时程序集未解析【英文标题】:assemblies not resolving while creating instance from AppDomain 【发布时间】:2012-04-05 08:08:56 【问题描述】:var processAssembly = Assembly.LoadFile(baseLocationCCDebugFolder+"\\CC.dll");
var processType = processAssembly.GetType("CC.Executor.CCProcess",true,true);
AppDomainSetup appDSetup = new AppDomainSetup()
ApplicationBase = baseLocationCCDebugFolder,
//PrivateBinPath = processAssembly.CodeBase
;
StrongName fullTrustAssembly = processAssembly.Evidence.GetHostEvidence<StrongName>();
AppDomain executionDomain = AppDomain.CreateDomain("ExecutionDomain",null,appDSetup,internetPS,fullTrustAssembly);
CCProcess process =(CCProcess)executionDomain.CreateInstanceAndUnwrap(processAssembly.ManifestModule.FullyQualifiedName, processType.FullName);
我在此代码的最后一行遇到错误,如下所示。
Could not load file or assembly 'D:\\work\\compilerCom\\CompileCom_Build_4_newArchitecture\\CompilerCom\\CC\\bin\\Debug\\CC.dll' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)<br/>
我仍然在应用程序域中寻找自己的方式。 我做错了什么?
编辑:-
baseLocationCCDebugFolder
变量的值为D:\\work\\compilerCom\\CompileCom_Build_4_newArchitecture\\CompilerCom\\CC\\bin\\Debug
【问题讨论】:
【参考方案1】:我的猜测是,不是未找到该程序集,而是未正确加载引用的程序集之一。您可能需要处理父应用程序域中的解析程序集事件。这里有一篇很好的文章来描述它。
http://social.msdn.microsoft.com/forums/en-US/clr/thread/0a18ed66-6995-4e7c-baab-61c1e528fb82/
【讨论】:
您还可以处理ReflectionTypeLoadException
并查看LoaderExceptions
属性以确定是否无法解析任何引用的程序集。比处理事件恕我直言更容易。以上是关于从 AppDomain 创建实例时程序集未解析的主要内容,如果未能解决你的问题,请参考以下文章
从 System.Type 在 AppDomain 中创建实例
在单个 AppDomain 上运行多个应用程序实例时如何防止属性覆盖?