2014-11-21 60 views
0

說我有在C#和外部項目二級庫,我要使用這些庫中:兩個庫引用相同的DLL

LibA.dll 
LibB.dll which also references LibA.dll because it uses some of its classes. 
Project C which references both LibA.dll and LibB.dll 

比方說裏面LibB.dll我有一個返回一個類的方法從LibA.dll鍵入並在我的項目中,我希望在調用該方法時立即設置適當的類類型。例如:

LibA.classInsideLibA myObj = LibB.getClassInsideLibAInstance(); 

這應該工作,但是我想知道如果引用LibA.dllLibB.dll當我的項目的內部時LibB.dll已經引用LibA.dll會有存在的任何問題。引用LibB.dll在這種情況下是否自動引用LibA.dll

+0

你在Visual Studio中試過嗎?我想你會發現這沒有問題,但是你應該在IDE中真正放棄它。 – PhillipH 2014-11-21 17:01:10

回答

1

「是否引用LibB.dll在這種情況下自動引用LibA.dll」

我認爲我們是在VS的項目討論refernces。當然所有的dll都必須在運行時可用

這取決於。如果你有projX-> DLLA-> DLLB

如果DLLA使用DLLB但犯規暴露任何DLLB類型(即在其中的一個方法返回一個DLLB類),那麼ProjA犯規需要了解DLLB

如果DLLA確實返回DLLB類projA需要DLLA和DLLB的引用

1

您已經一直這樣做。以string班爲例,假裝這是你的LibA。我相信你有一個庫,返回一個string。您也可能從您的庫參考mscorlib(其中String居住在您的主項目中)返回了一個字符串。

這也不例外。

System.String myString = LibB.GetSomeString(); 
+0

如果有一個非.net程序集,它將不會被複制到發佈的項目,而我認爲部署。 – 2014-11-21 17:11:29

+0

我假設你的意思是「非標準.net程序集」。你不*包含'mscorlib'的引用,所以情況保持不變。另外,OP說項目C引用了LibA和LibB,在這種情況下,兩者都應該被複制到輸出目錄。 – MikeH 2014-11-21 17:15:40

+0

我回顧一下......你可能無法刪除對核心庫的引用。 – MikeH 2014-11-21 17:18:23

相關問題