【发布时间】:2014-02-06 20:27:26
【问题描述】:
我有一个强命名程序集,AssemblyA。我想引用 AssemmblyB,它没有强命名。最好的方法是什么?
我看到了一些关于将 AssemblyB 加载到单独的 AppDomain 中的示例,但我遇到了一些麻烦。以下是我尝试过的(此代码来自 AssemblyA):
var domain = AppDomain.CreateDomain("NewDomainName");
var pathToDll = @"\\myDLLs\AssemblyB.dll";
var tmp = domain.CreateInstanceFromAndUnwrap(pathToDll, TYPE_NAME);
现在,我不确定 TYPE_NAME 应该使用什么。我希望能够使用 AssemblyB 中的多种不同类型,所以我很确定我在这里走错了路。
另一件事是我什至无法从 AssemblyA 引用 AssemblyB,因为一旦我这样做了,AssemblyA 将由于强名称/无强名称不匹配而无法构建。
我是否需要以某种方式从一个未签名的新项目中引用 AssemblyB?
基本上,目标是访问 AssemblyB,因为我只是直接引用了它。
谢谢。
【问题讨论】:
-
1) 确保调用应用程序允许运行未签名的程序集。可能,您可以在运行时执行此操作,然后仅在应用程序正常时才动态加载 AssemblyB。请参阅 Assembly.Load():msdn.microsoft.com/en-us/library/…