尝试获取单独的Application Domain中的类的实例时遇到此错误。这是代码:

string assemblyName = Assembly.GetExecutingAssembly().FullName;
string typeName = "Namespace.ClassName";

AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
SecurityZone zone = SecurityZone.MyComputer;

// Set up the Evidence
Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
Evidence evidence = new Evidence(baseEvidence);
evidence.AddAssembly(assemblyName);
evidence.AddHost(new Zone(zone));

AppDomain app = AppDomain.CreateDomain("Processor AppDomain", evidence, setup);
core = (Core)app.CreateInstanceAndUnwrap(assemblyName, typeName);


这两个类(调用和被调用)都在相同的assemby(COM dll)中。

那么有人知道这个例外的原因是什么?感谢您的任何回复。

最佳答案

您的应用程序如何引用com dll?这也是.net dll吗?如果您的应用程序将其引用为项目,并且还注册为com dll,则您的应用程序可能会引用dll的两个不同副本,在这种情况下,它将把您的Core类视为两个单独的类,因为它们位于不同的dll中。您可以考虑挂接到appdomains AssemblyLoad事件以调试此事件并检查正在加载的程序集的位置。

10-08 14:04