1

我想知道这样的设置是否可行:

c:\eflow\proxy.dll(应用程序加载的主DLL) c:\eflow\application\dynamic.dll(proxy.dll动态加载的DLL) c:\eflow\dependency.dll(dynamic.dll所需的依赖DLL )

基本上,我想动态加载一个 DLL(以实例化类等),但将该 DLL 的依赖项存储在不同的位置。

这可能吗?我不想在每个子目录中都有这些依赖 DLL 的副本......(我无法将它们加载到 GAC 中,因为它们没有签名并且它们是第 3 方 DLL)

4

1 回答 1

3

是的,你可以这样做。

通过处理AppDomain.AssemblyResolve 事件,您可以从任何您喜欢的地方加载依赖程序集。如果您的应用程序知道依赖程序集可能位于另一个目录中,那么它可以处理此事件(这会自动暗示它们在 applciation 目录中没有找到,因为 .Net 框架首先会在那里查找),并尝试从该目录加载程序集备用位置。

有关详细信息,请参阅解决装配负载。

更新:在这种情况下,我相信您可以将给定目录添加到所需应用程序域的AppDomainSetup.PrivateBinPath 属性中。这仅在给定目录是应用程序基目录的子目录时才有效。如果不是这种情况,那么要使用这种方法,您需要使用合适的应用程序基目录创建一个新的 AppDomain。

另请参阅装配体加载的最佳实践

于 2011-07-25T12:20:13.740 回答