我正在研究C#類庫項目。該項目引用其他DLL文件,例如log4net.dll。在這個項目中,我只有一個使用log4net.dll的類。當其他項目引用我的項目時,我只想在其他項目調用使用log4net.dll的類時將log4net.dll複製到它的bin文件夾。動態複製DLL文件。
這可行嗎?
我正在研究C#類庫項目。該項目引用其他DLL文件,例如log4net.dll。在這個項目中,我只有一個使用log4net.dll的類。當其他項目引用我的項目時,我只想在其他項目調用使用log4net.dll的類時將log4net.dll複製到它的bin文件夾。動態複製DLL文件。
這可行嗎?
將庫拆分爲兩部分,並從主庫中刪除對log4net.dll的引用,並且僅在需要將某些內容綁定到需要log4net.dll的部分時引用第二個庫。
好辦法如何處理這樣的情況下,依賴注入 - 看看企業庫(統一容器) - 儘管這會給你一個額外的dll :)
使用Unity容器:
你」會具有與分享幫助ILog4NetUsingInterface
在Library2你就會有類Log4NetUsingClass:ILog4NetUsingInterface
在Library2你必須引導程序,將註冊Log4NetUsingClass是否履行作爲ILog4NetUsingInterface離子
public static class Bootstrapper {
public static void Init() {
ServiceLocator.IoC.RegisterSingleton<ILog4NetUsingInterface, Log4NetUsingClass>();
}
}
此初始化方法,如果你需要使用Log4NetUsingClass
在每一個其他圖書館你只叫你可以叫
ServiceLocator.IoC.Retrieve<ILog4NetUsingInterface>()
(如果你不調用引導程序它會給你運行時錯誤。)
如何動態加載DLL並完全避免硬引用:http://stackoverflow.com/questions/465488/can-i-load-a-net-asse mbly-at-runtime-and-instantiate-a-type-know-only-the-na – DonBoitnott
這就是我正在做的。我有一個適配器,用戶可以調用並設置DLL路徑。但是我不希望用戶這樣做,如果我能夠複製DLL,如果我看到用戶的項目將需要它。 – Lucas