动态复制DLL文件。

时间:2013-06-20 14:33:56

标签: c# dll log4net

我正在开发一个C#类库项目。此项目引用其他DLL文件,例如log4net.dll。在这个项目中,我只有一个使用log4net.dll的类。当其他项目引用我的项目时,我只想在其他项目调用使用log4net.dll的类时将log4net.dll复制到其bin文件夹。

这可行吗?

1 个答案:

答案 0 :(得分:0)

将您的库拆分为两个并从主库中删除log4net.dll的引用,并且仅当您需要与需要log4net.dll的部分绑定的内容时才引用第二个库。

如何处理这种情况的好方法是依赖注入 - 看一下Enterprise Library(统一容器) - 虽然这会给你一个额外的dll:)

使用Unity容器:

你将拥有带有ILog4NetUsingInterface的Library1

在Library2中你将拥有类Log4NetUsingClass:ILog4NetUsingInterface

在Library2中,您将拥有将Log4NetUsingClass注册为ILog4NetUsingInterface实现的引导程序

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

只有在需要使用Log4NetUsingClass

时才会调用此Init方法

在其他所有图书馆,您只需致电

ServiceLocator.IoC.Retrieve<ILog4NetUsingInterface>()

(如果你不打电话给bootstrapper,它会给你运行时错误。)