1

我有一个已经创建的程序集,比如说Static.dll,还有一个我在运行时创建的动态程序集,比如说DynamicDynamic创建一些 IL 代码以从Static.dll. 创建时Dynamic(成功保存),可执行文件在运行时出错,因为它无法加载程序集Static.dll类型。我相信这种情况正在发生,因为Dynamicexe 输出找不到这个 dll(或者至少这是我的猜测)。

如何完成添加此Static.dll引用,以便当有人运行生成的可执行输出时Dynamic,它可以找到引用的类型?

我知道Assembly.Load(),但仅此一项并不能改变任何事情。或者至少,我不确定这给了我什么,因为我不需要在运行时使用该类型,而是在运行Dynamic可执行文件时使用。

最后,我控制Static.dll,所以如果我可以对项目做些什么来修复它,它可以完成,但是,它确实需要保持独立(我不想每次创建时都发出这个库动态装配)。基本上,我我想让我的动态程序集.assembly extern mscorlib在它的清单中保存Staticmscorlib 的位置。

谢谢

4

1 回答 1

2

如何完成添加此Static.dll引用,以便当有人运行生成的可执行输出时Dynamic,它可以找到引用的类型?

引用将自动添加。请注意,当您的动态程序集执行时,正常的程序集探测规则适用,以便找到程序集。您必须(其中之一):

  • 将 static.dll 与 dynamic.dll 一起发布
  • 将 static.dll 放入 GAC(但请:不要这样做!)
  • 在自定义 AppDomain 中运行 dynamic.dll 并使用自定义探测路径配置,以便找到 static.dll
  • 处理 AppDomain.AssemblyResolve 以提供 static.dll
  • 使用 ILMerge 之类的东西来融合 static.dll 和 dynamic.dll
于 2012-07-28T07:09:39.420 回答