有没有一种方法可以强制将所有引用的程序集加载到应用程序域中?

我的项目是这样设置的:

  • 项目“定义”

  • 项目实施”

  • 项目“消费者”

项目“消费者”同时引用了“定义”和“实施”,但没有静态引用“实施”中的任何类型。

当应用程序启动时,“消费者”项目将在“定义”中调用静态方法,该方法需要在“实施”中查找类型。

有没有一种方法可以强制将任何引用的程序集加载到App Domain中,而无需知道路径或名称,最好是不必使用完整的IOC框架?


忽然笑
浏览 546回答 3
3回答

智慧大石

您可以使用Assembly.GetReferencedAssemblies获取AssemblyName[],然后分别调用Assembly.Load(AssemblyName)它们。当然,您需要递归-但最好跟踪已加载的程序集:)

杨魅力

只是想分享一个递归示例。我在启动例程中这样调用LoadReferencedAssembly方法:foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()){    this.LoadReferencedAssembly(assembly);}这是递归方法:private void LoadReferencedAssembly(Assembly assembly){    foreach (AssemblyName name in assembly.GetReferencedAssemblies())    {        if (!AppDomain.CurrentDomain.GetAssemblies().Any(a => a.FullName == name.FullName))        {            this.LoadReferencedAssembly(Assembly.Load(name));        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP