2012-02-20 62 views
0

我創建了一個新的VS「空」項目,並在其中創建了一個類。我決定試試這個作爲一個庫,進入屬性,並將輸出類型設置爲類庫。它編譯爲一個dll,但是當我將它添加爲另一個項目的引用時,輸入「using ...」沒有我的新庫。如果我創建一個新的庫項目,通過我的課程在那裏,編譯成一個DLL,然後它工作正常。所以我想知道的是,我需要在空白項目中更改哪些設置才能使其充當dll?我如何獲得一個空的項目作爲一個DLL編譯?

+1

您還應該確保該類是「public」。 – CodesInChaos 2012-02-20 09:43:14

+0

@CodeInChaos你有這個權利的頭,謝謝 – cost 2012-02-20 09:52:19

回答

5

using指令是關於命名空間,不組件

如果你的庫是空的,它不會對命名空間做任何貢獻,所以using指令找不到任何東西。

瞭解命名空間和程序集之間的區別非常重要 - 您可以使用僅包含Bar.Xyz的程序庫Foo.dll。您可以在您的項目中將參考添加到Foo.dll,但使用指令Bar

至於更具體的例子中,Enumerable類的System.Linq命名空間來自System.Core.dll - 但是你仍然添加using指令爲System.Linq,不System.Core。事實上,如果您嘗試爲System.Core添加using指令,則會出現錯誤 - 因爲該名稱空間不存在。 (如果名稱空間沒有成員,則實際上不存在名稱空間。)

+0

我有點理解命名空間和程序集之間的區別(可能不如我應該,但我這樣做)。但是你是對的,我沒有以最愚蠢的方式向命名空間提供任何東西:我的課程不公開。當我將其粘貼到庫項目中時,類聲明默認爲公開。我們變得更聰明,我們變成了笨蛋,呃?但是,感謝你的教訓,這確實爲我澄清了一些事情。 – cost 2012-02-20 09:51:43

+0

@cost:我不確定你的意思是「類聲明默認爲public」 - 默認情況下頂級類是內部的。 – 2012-02-20 09:52:58

+0

我的意思是,如果我創建一個空的項目,然後添加 - >新類,就像我第一次開始編程時所做的那樣,它只是創建「class Class1」。但是如果我創建一個新的庫項目,它會創建「公共類Class1」。我完全瞥了一眼,它並沒有自動公開給我。 – cost 2012-02-20 09:57:12

相關問題