2012-01-09 174 views
2

因此,可以說,你有3個項目:VS2005圖書館

ProjectA - Class Library 
ProjectB - Class Library 
ProjectC - Console Application 

現在讓我們說ProjectB使用ProjectA的DLL和ProjectC使用ProjectB的DLL。

目前,我必須爲ProjectC添加對ProjectBProjectA的引用。

有沒有辦法避免這種情況?

+0

當ProjectC使用來自ProjectA的類型時,你需要有這個參考,否則你不需要。 – Steven 2012-01-09 13:33:35

回答

0

如果項目C不直接使用從項目A的任何類,就沒有必要對項目C一個參考項目A.

你仍然需要在項目運行過程中提供的DLL。

澄清「直接使用」 - 項目C的代碼中的任何引用到類,接口,結構 - 在項目A中定義的任何東西,以及對項目B中定義的類或接口的引用,但是繼承自在項目A中定義的基類/接口。

這是使用DI(依賴注入)時的工作方式 - 您的項目B是應用程序(C)和服務實現(A)之間的契約。它包含接口和POCO。

編譯時,應用程序只知道合約,運行時DI容器加載實現。更改實現不需要重新編譯,可以通過交換dll來完成。

+0

或多或少我所害怕的。我希望有一種方法可以將'ProjectA'庫包含到'ProjectB'中... – Andrew 2012-01-09 13:56:21

0

沒有其他辦法。您必須在B中添加A的引用,並在C中添加B的引用,否則VS.NET將如何知道要使用哪個類庫? 但是,我不認爲你需要在C中同時使用A和B的引用。如果構建不成功,請檢查代碼 - 您可能正在使用C的某個地方的類。