我写了一个.dll,它在运行时会加载其他.dll。这在桌面上真的很好用。我正在使用以下代码实现这一目标:
Assembly loadedAssembly = Assembly.Load("somePath");
我遇到的问题是我需要在Web应用程序中重用此.dll。但是,在调用完代码后,我需要卸载程序集以在Web服务器上进行清理。
我一直尝试使用AppDomain,但我不断收到一个例外,即该库或其依赖项之一不存在。
AppDomain myDomain = AppDomain.CreateDomain("MyNewDomain");
myDomain.Load("SomePath.dll");
没用
AppDomainSetup domainSetup = new AppDomainSetup() { };
Evidence domainEvidence = new Evidence();
domainEvidence.AddHostEvidence(new Zone(SecurityZone.Trusted));
PermissionSet permissions = SecurityManager.GetStandardSandbox(domainEvidence);
AppDomain myDomain = AppDomain.CreateDomain, domainEvidence, domainSetup, permissions, null);
myDomain.Load("SomePath.dll");
结果相同
我已经阅读了关于AppDomain的许多Microsoft / Stackoverflow文章,并且没有进一步了解。
如果有人有更多的知识,我将不胜感激。
更新
当我尝试添加AssemblyResolve事件时,出现以下异常:
成员类型不正确
myDomain.AssemblyResolve += myDomain_AssemblyResolve;