我正在开发一个C#类库项目。此项目引用其他DLL文件,例如log4net.dll。在这个项目中,我只有一个使用log4net.dll的类。当其他项目引用我的项目时,我只想在其他项目调用使用log4net.dll的类时将log4net.dll复制到其bin文件夹。
这可行吗?
答案 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,它会给你运行时错误。)