正在动态复制DLL文件

本文关键字:DLL 文件 复制 动态 | 更新日期: 2023-09-27 18:19:25

我正在做一个C#类库项目。此项目引用其他DLL文件,如log4net.DLL。在此项目中,我只有一个使用log4netdll的类。当其他项目引用我的项目时,只有当其他项目正在调用使用log4net.DLL的类时,我才希望将log4net.exe复制到其bin文件夹。

这可行吗?

正在动态复制DLL文件

将您的库一分为二,并从主库中删除对log4net.dll的引用,只有当您需要与需要log4netdll的部分绑定的东西时,才引用第二个库。

处理这种情况的好方法是依赖注入-看看企业库(统一容器)-尽管这会给你一个额外的dll:)

使用Unity容器:

您将拥有带有ILog4NetUsingInterface 的Library1

在Library2中,您将拥有Log4NetUsingClass:ILog4NetUsing Interface 类

在Library2中,您将拥有引导程序,它将注册Log4NetUsingClass作为ILog4NetUsing Interface 的实现

public static class Bootstrapper {
    public static void Init() {
      ServiceLocator.IoC.RegisterSingleton<ILog4NetUsingInterface, Log4NetUsingClass>();
    }
}

只有当您需要使用Log4NetUsingClass 时,才会调用此Init方法

在其他所有图书馆,你只需调用

ServiceLocator.IoC.Retrieve<ILog4NetUsingInterface>()

(如果你不调用引导程序,它会给你运行时错误。)