我已经创建了一个程序集 Static.dll, ,以及我在运行时创建的动态程序集,比如说 Dynamic. Dynamic 创建一些 IL 代码来创建新类型 Static.dll. 。什么时候 Dynamic 创建后(保存成功),可执行文件在运行时出错,因为它无法加载程序集 Static.dll 类型。我相信自从 Dynamic exe输出找不到这个dll(或者至少这是我的猜测)。

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

我知道关于 Assembly.Load(), ,但这本身并不能改变任何事情。或者至少,我不确定这会给我带来什么,因为我不需要在运行时使用该类型,而是在运行时使用该类型 Dynamic 可执行的。

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

谢谢

有帮助吗?

解决方案

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

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

  • 将 static.dll 与dynamic.dll 一起发布
  • 将 static.dll 放入 GAC 中(但请:不要这样做!)
  • 使用自定义探测路径配置在自定义 AppDomain 中运行dynamic.dll,以便找到 static.dll
  • 处理AppDomain.AssemblyResolve以提供static.dll
  • 使用ILMerge之类的东西来融合static.dll和dynamic.dll
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top