【发布时间】:2010-01-15 12:15:22
【问题描述】:
如何加载 dll 及其依赖项?我不想将每个依赖 dll 放在 Assembly.Load 中。我宁愿只加载一个 dll,然后加载依赖项。
我的应用程序启动时没有加载上述 dll。它们仅在用户执行特定操作时加载,然后冻结 gui。
一种解决方法是在我的窗口的构造函数中创建一个实例,然后将该实例设置为 null。这绝对不是最优雅的解决方案。或者是吗?谢谢。
【问题讨论】:
如何加载 dll 及其依赖项?我不想将每个依赖 dll 放在 Assembly.Load 中。我宁愿只加载一个 dll,然后加载依赖项。
我的应用程序启动时没有加载上述 dll。它们仅在用户执行特定操作时加载,然后冻结 gui。
一种解决方法是在我的窗口的构造函数中创建一个实例,然后将该实例设置为 null。这绝对不是最优雅的解决方案。或者是吗?谢谢。
【问题讨论】:
你可以加载你的程序集,然后使用:
var names = myAssembly.GetReferencedAssemblies();
Assembly.GetReferencedAssemblies 将为您提供程序集引用的程序集的完整列表。也只需加载这些,您将加载所有依赖项。
【讨论】:
作为构造函数想法的一个更优雅的版本,您可以在应用程序启动时使用启动屏幕来娱乐用户,并简单地从您的客户端代码进行一些强制加载 DLL 的任意调用。从一个单独的非 ui 线程...
无论是使用 Assembly.Load 还是强制加载,启动画面都是一个好主意。
【讨论】:
除非您的应用程序要在来自后期加载的程序集的引用程序集中使用特定类型,否则无需让应用程序本身加载这些引用。否则,Reed Copsey 的答案将是您最好的选择。
【讨论】: