C# 动态复制DLL文件。
我正在做一个C#class库项目。此项目引用其他DLL文件,例如log4net.DLL。在这个项目中,我只有一个类使用log4net.dll。当其他项目引用我的项目时,仅当其他项目调用使用log4net.dll的类时,我才希望将log4net.dll复制到其bin文件夹C# 动态复制DLL文件。,c#,dll,log4net,C#,Dll,Log4net,我正在做一个C#class库项目。此项目引用其他DLL文件,例如log4net.DLL。在这个项目中,我只有一个类使用log4net.dll。当其他项目引用我的项目时,仅当其他项目调用使用log4net.dll的类时,我才希望将log4net.dll复制到其bin文件夹 这是否可行?将您的库一分为二,并从主库中删除对log4net.dll的引用,并且仅当您需要与需要log4net.dll的部件绑定的内容时才引用第二个库 处理这种情况的好方法是依赖项注入——看看企业库(unity容器)——尽管这会
这是否可行?将您的库一分为二,并从主库中删除对log4net.dll的引用,并且仅当您需要与需要log4net.dll的部件绑定的内容时才引用第二个库 处理这种情况的好方法是依赖项注入——看看企业库(unity容器)——尽管这会给您一个额外的dll:) 使用Unity容器: 你将有一个图书馆1和ILog4NetUsingInterface
public static class Bootstrapper {
public static void Init() {
ServiceLocator.IoC.RegisterSingleton<ILog4NetUsingInterface, Log4NetUsingClass>();
}
}
在Library2中,您将拥有Log4NetUsingClass:ILog4NetUsingInterface类
public static class Bootstrapper {
public static void Init() {
ServiceLocator.IoC.RegisterSingleton<ILog4NetUsingInterface, Log4NetUsingClass>();
}
}
在Library2中,您将有一个引导程序,它将Log4NetUsingClass注册为ILog4NetUsingInterface的实现
public static class Bootstrapper {
public static void Init() {
ServiceLocator.IoC.RegisterSingleton<ILog4NetUsingInterface, Log4NetUsingClass>();
}
}
公共静态类引导程序{
公共静态void Init(){
ServiceLocator.IoC.RegisterSingleton();
}
}
只有在需要使用Log4NetUsingClass时,才会调用此Init方法
在其他任何图书馆你都可以打电话
ServiceLocator.IoC.Retrieve<ILog4NetUsingInterface>()
ServiceLocator.IoC.Retrieve()
(如果你不调用bootstrapper,它会给你运行时错误。)动态加载DLL并避免硬引用如何:这就是我正在做的。我有一个适配器,用户可以调用并设置DLL路径。但是如果我能复制DLL,如果我看到用户的项目需要它,我不希望用户这样做。