回答
沒有理由,真的。這可能是因爲Visual Studio設置爲顯示不在項目中的文件(很難從圖片中分辨出來),而且dll恰好位於主目錄中。文本是相當清楚的,額外的文件
- bass.dll
- bassenc.dll
- lame.exe
在.NET一個恰好是與他人在相同目錄,你需要添加它作爲參考。
如果程序集(您的案例中的Bass.Net.dll)包含要使用的類,則必須將對該程序集的引用添加到項目中。
沒有一點的最好的事情就是讓所有的dependenicies並將它們存儲在一個單獨的文件夾,只引用它們不將它們複製到你的解決方案;)
有那些在你的項目和輸出目錄允許最終執行代碼引用它們,而不會在不同機器上運行任何問題。
這聽起來像是因爲它們將引用dll放在項目目錄中,從那裏引用它們,並將它們包括在項目中。這樣,當項目目錄被複制時,參考DLL將被複制。此外,如果引用dll丟失,該項目將在Visual Studio中投訴。
在Windows中,DLL是一個dynamic link library,它將一組編程功能打包在一起。在這個例子中,bass.dll通過這個文件(以及它依賴的任何文件)公開了與音頻處理相關的特性和功能。爲了使用此功能,您需要解決方案中的參考信息,以便Visual Studio在編譯時可以使用link it。在構建應用程序時,DLL通常會被複制到輸出目錄中。
這就是讓代碼正常工作所必需的,剩下的只是偏好或慣例。有些人更喜歡使解決方案中的項目目錄中存在所有文件,以便解決方案資源管理器反映文件系統。通常情況下,您需要將應用程序所依賴的庫存放在解決方案目錄層次結構中的某個位置,以便將整個應用程序打包在一起(例如,使源代碼控制更容易使用)。不過,您不希望將該庫放在BIN目錄或Visual Studio生成的任何目錄中,以避免意外刪除。無論如何,引用是重要的部分,項目或解決方案中的文件不是必需的。
雖然通常情況下,您會希望將外部庫存放在源目錄之外,所以我實際上不會推薦這種結構。我傾向於使用這樣的結構,但同樣,這是所有喜好:
- 來源:源代碼和項目文件
- 庫:DLL文件
- 支持:雜項代碼或項目,但實際上沒有應用程序的一部分(可能是部署腳本)
這真的很難猜測,爲什麼別人沒有的東西,但如果我真的猜,I'ld說,以爲那傢伙嵌入所需的dll的資源確保它對應用程序有用。我已經看到這種技術用於嵌入字體或聲音,我不確定它是否可以使用dll工作;但這只是一個猜測。
當然,確保文件可用的最好方法是使用Visual Studio或其他安裝工具loke或InnoSetup創建部署項目,僅舉幾例。
在很多情況下,這實際上可能是一個好主意。在我看來他們有3種類型的依賴關係
- 來自.Net標準庫的組件。切勿在本地包括這些
- 您希望其他開發人員安裝的組件作爲MSI或exe安裝程序包的一部分。這通常意味着他們強烈簽名並在GAC中擁有副本。
- 您不希望其他開發人員通過MSI或exe安裝程序安裝的組件。也許是因爲您有第三方或內部圖書館不在GAC中。
在第三種情況下,最簡單的做法是存儲DLL的拷貝源回購。
- 1. 添加一個DLL到C#項目和使用DLL功能
- 2. 將C++ DLL添加到C#項目
- 3. VS C++多個項目到一個DLL
- 4. 將* .mdf文件添加到C#項目
- 5. 如何添加一個DLL到一個VC++ 2008項目
- 6. 將一個VB文件添加到C#項目中
- 7. C++。鏈接.dll文件到項目
- 8. 將.dll添加到NetBeans 7.0 C項目。無法查看.dll
- 9. 添加的ActiveX DLL C#項目
- 10. 如何在C#項目中添加dll
- 11. 將一個DLL添加到C#CodeDom
- 12. 我可以添加一個.xap文件到另一個項目
- 13. loading Net。將DLL文件動態添加到我的項目中
- 14. 將dll文件添加到安裝項目時出錯
- 15. 無法添加dll文件引用到VS2008中的F#項目
- 16. 一個VB項目的Openpop Dll文件
- 17. 添加.NETFramework 4.5 dll到.NETCore項目
- 18. 如何將DLL添加到Qbs項目
- 19. 將DLL添加到NetBeans項目
- 20. 在Visual Studio中添加dll到項目
- 21. 將.lib文件添加到項目後,Visual Studio 2008找不到.dll文件
- 22. BadImageFormatException,試圖.dll文件添加到C#項目時 - 英特爾realsense SDK
- 23. 如何將dll文件添加到C#項目並正確使用它們?
- 24. 如何將BPM檢測庫的.dll文件添加到我的c#項目中?
- 25. 「C++單元測試文件只能添加到Dll項目類型」?
- 26. 添加多個項目到一個文件
- 27. C#項目添加到ImageListBoxControl
- 28. C#:訪問文件添加到項目文件夾
- 29. Qt Creator,我如何添加一個C++項目到另一個?
- 30. C# - 出口類/從另一個項目枚舉.dll文件
好吧,我明白爲什麼它是在參考 - 但不是爲什麼它被添加爲項目中的文件。 – Mat 2009-06-22 21:55:20
對不起,我不明白這個問題的正確性。是的,將它作爲參考添加就足夠了,讓它「作爲文件添加」並不重要。當然,在部署應用程序時,它必須與以後的可執行文件位於同一個文件夾中。 – Groo 2009-06-22 22:28:58