【问题标题】:Loading an unsigned assembly dynamically from a signed assembly从已签名程序集中动态加载未签名程序集
【发布时间】: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/…

标签: c# .net


【解决方案1】:
  1. 您想要跨 AppDomain 访问的任何 TYPE_NAME 都应该是可远程的。检查AppDomain.CreateInstanceAndUnwrap

  2. 不允许从已签名程序集中引用未签名程序集。否则,它会违背首先签署程序集 A 的目的。

【讨论】:

    猜你喜欢
    • 2011-05-19
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多