【问题标题】:How to load multiple assembies如何加载多个程序集
【发布时间】:2012-04-27 13:59:40
【问题描述】:
  1. 在 C# 编程中,我试图在它们的命名空间中加载具有相同功能的多个程序集,以进行反射。例如,在命名空间中加载所有具有相同前缀的程序集 ABC.. ABC.* ABC...* 如何实现?

  2. 类似的问题是如何加载名称中具有相同功能的多个程序集?

谢谢, 肯

【问题讨论】:

  • “加载程序集”是什么意思?你的意思是加载它以进行反射、导入它、在你的项目中引用它等等?
  • 加载程序集进行反射。
  • 您所说的“相同功能”到底是什么意思?
  • 正如我在示例中所示,名称具有公共前缀的程序集:“Shape1.dll”、“Shape231.dll”、“Shape392.3eisl.exe”等。
  • 我在另一个 SO 上看到了如何通过反射来做到这一点,但是将程序集加载到他们自己的 appdomain 工作吗?如果将它们加载到当前的 appdomain 中,则在程序关闭之前无法卸载它。多个应用程序域将允许同时加载多个版本。

标签: c# .net assemblies


【解决方案1】:

您可以使用Reflection.Assembly.ReflectionOnlyLoadFrom(filepath)

【讨论】:

  • 我尝试加载的程序集可能位于不同的文件夹中。在同一个文件夹下,可能有一些不需要的额外程序集。
  • 嗯嗯。因此..?等等等等..?那又怎样?
  • 对于一个简单的情况,如果我需要在同一个文件夹下加载多个同名前缀的程序集,哪个函数可以使它工作?我尝试了 Assembly asm = Assembly.LoadFrom(filepath) 但没有成功。
【解决方案2】:

对于第 2 个问题 - 如果您有这些程序集的文件,您可以使用 Assembly.LoadFrom(String)Assembly.ReflectionOnlyLoadFrom(String) 并传递与您所需模式匹配的这些文件的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多