我創建了一個新的VS「空」項目,並在其中創建了一個類。我決定試試這個作爲一個庫,進入屬性,並將輸出類型設置爲類庫。它編譯爲一個dll,但是當我將它添加爲另一個項目的引用時,輸入「using ...」沒有我的新庫。如果我創建一個新的庫項目,通過我的課程在那裏,編譯成一個DLL,然後它工作正常。所以我想知道的是,我需要在空白項目中更改哪些設置才能使其充當dll?我如何獲得一個空的項目作爲一個DLL編譯?
回答
using
指令是關於命名空間,不組件。
如果你的庫是空的,它不會對命名空間做任何貢獻,所以using指令找不到任何東西。
瞭解命名空間和程序集之間的區別非常重要 - 您可以使用僅包含Bar.Xyz
的程序庫Foo.dll
。您可以在您的項目中將參考添加到Foo.dll
,但使用指令Bar
。
至於更具體的例子中,Enumerable
類的System.Linq
命名空間來自System.Core.dll
- 但是你仍然添加using
指令爲System.Linq
,不System.Core
。事實上,如果您嘗試爲System.Core
添加using
指令,則會出現錯誤 - 因爲該名稱空間不存在。 (如果名稱空間沒有成員,則實際上不存在名稱空間。)
我有點理解命名空間和程序集之間的區別(可能不如我應該,但我這樣做)。但是你是對的,我沒有以最愚蠢的方式向命名空間提供任何東西:我的課程不公開。當我將其粘貼到庫項目中時,類聲明默認爲公開。我們變得更聰明,我們變成了笨蛋,呃?但是,感謝你的教訓,這確實爲我澄清了一些事情。 – cost 2012-02-20 09:51:43
@cost:我不確定你的意思是「類聲明默認爲public」 - 默認情況下頂級類是內部的。 – 2012-02-20 09:52:58
我的意思是,如果我創建一個空的項目,然後添加 - >新類,就像我第一次開始編程時所做的那樣,它只是創建「class Class1」。但是如果我創建一個新的庫項目,它會創建「公共類Class1」。我完全瞥了一眼,它並沒有自動公開給我。 – cost 2012-02-20 09:57:12
- 1. 如何在.NET中將一個項目編譯爲多個dll
- 2. 編譯一個C#項目作爲Unity3d的DLL
- 3. 編譯一個C#項目到一個DLL
- 4. 編譯一些dll到另一個dll
- 5. 如何編譯形成一個DLL
- 6. ASP.NET - 如何阻止一個項目中的類/ dll被編譯到另一個項目中
- 7. 一個DLL,多個項目?
- 8. 如何從一個DLL獲得可用的翻譯
- 9. 如何獲得一個項目的索引,一個ItemsControl
- 10. 另一個子項目作爲依賴編譯gradle這個子項目
- 11. 因爲我可以編譯一個Cocos2D-X的項目嗎?
- 12. 如何同時爲.Net 3.5和4編譯一個項目
- 13. 我如何獲得一個ListView項目的會話信息
- 14. 如何在一個查詢中獲得一個項目和另一個項目的值最接近前一個?
- 15. 項目不能一個dll
- 16. 獲得一個編譯錯誤與ntddscsi.h
- 17. 如何將一批.NET DLL反編譯到Visual Studio項目中
- 18. 在dll中從另一個項目中獲得點擊方法
- 19. 如何獲得個人項目從一個數組的 - jQuery的
- 20. 錯誤編譯一個空的CUDA項目
- 21. 編譯一個項目,其中有sharekit
- 22. 在項目中只編譯一個類
- 23. msdev批量編譯一個C#項目
- 24. 如何添加一個DLL到一個VC++ 2008項目
- 25. 如何獲得每個循環中的前一個項目
- 26. 如何獲得每個組的一個項目?
- 27. 如何將一個.DLL文件合併到我的VB項目
- 28. 編譯一個C++庫作爲一個靜態庫和動態DLL與VS
- 29. 如何編譯並運行一個單獨的文件夾的一個項目?
- 30. 如何製作空的mfc dll項目?
您還應該確保該類是「public」。 – CodesInChaos 2012-02-20 09:43:14
@CodeInChaos你有這個權利的頭,謝謝 – cost 2012-02-20 09:52:19