簡體   English   中英

C#解決方案:為外部dll使用一個“Globals”項目?

[英]C# solutions : using one “Globals” project for external dll's?

(抱歉,這可能是一個微不足道的問題,我來自Java和Maven,仍然沒有把我的思想包裹在C#依賴項中)

我想在我的所有項目中使用log4net。 由於我不想將dll添加到所有項目中,因此我創建了一個“Globals”項目,在其中添加對log4net.dll的引用,並將所有其他項目引用到“Globals”項目。

但是,我似乎無法從任何其他項目訪問log4net類。

using Globals.log4net;

似乎也沒有用。

我究竟做錯了什么?

如果您所做的只是引用DLL,那么您所做的就是獲取DLL的副本 ,每次引用您的Globals項目。 您仍然沒有使用該庫。

我通常會創建一個ILogger接口,使用Globals項目中的log4net實現它,並在其他項目中使用該實現(以及測試的模擬實現)。

我擔心這不是它的工作方式。 您必須將DLL添加到要從中調用它的所有項目。

如果您只在DLL中使用了幾個函數,則可以在Globals項目中創建函數來調用它。

log4net不僅僅通過引用在Globals中“存在”。

我的第一個傾向是讓你的所有項目都引用log4net,它澄清了依賴,不需要在另一個項目中隱藏它。

但是,如果您在類之間共享共享邏輯,則可以使用“全局”或“公共”類,其中包括對共享庫的引用。 要引用這些庫,只需添加目標命名空間的使用。

換句話說,無論引用是在同一項目還是另一個引用項目中,using語句都是相同的。

對於log4net我相信它應該只是:

using log4net;

添加正確引用的另一種方法是在代碼中鍵入其中一個類名( Logger ?),然后使用“CTRL +”調用幫助器菜單。 或者通過簡單地擴展它,可以選擇添加正確的using語句。

那個系統不起作用。 您必須添加log4net dll作為所有項目的參考。 或者創建代理類,這是更多的工作。

閱讀GAC(全局程序集緩存),這是一個跨項目共享的DLL的中央存儲...這就是我放置log4net DLL的地方。 然后,您只需在.config文件forevery項目中添加對它的引用即可,無需將DLL添加到項目本身。

這是一個很好的起點: MSDN:使用全局程序集緩存

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM