2009-06-22 33 views

回答

3

沒有理由,真的。這可能是因爲Visual Studio設置爲顯示不在項目中的文件(很難從圖片中分辨出來),而且dll恰好位於主目錄中。文本是相當清楚的,額外的文件

  • bass.dll
  • bassenc.dll
  • lame.exe

在.NET一個恰好是與他人在相同目錄,你需要添加它作爲參考。

0

如果程序集(您的案例中的Bass.Net.dll)包含要使用的類,則必須將對該程序集的引用添加到項目中。

+0

好吧,我明白爲什麼它是在參考 - 但不是爲什麼它被添加爲項目中的文件。 – Mat 2009-06-22 21:55:20

+0

對不起,我不明白這個問題的正確性。是的,將它作爲參考添加就足夠了,讓它「作爲文件添加」並不重要。當然,在部署應用程序時,它必須與以後的可執行文件位於同一個文件夾中。 – Groo 2009-06-22 22:28:58

0

沒有一點的最好的事情就是讓所有的dependenicies並將它們存儲在一個單獨的文件夾,只引用它們不將它們複製到你的解決方案;)

1

有那些在你的項目和輸出目錄允許最終執行代碼引用它們,而不會在不同機器上運行任何問題。

這聽起來像是因爲它們將引用dll放在項目目錄中,從那裏引用它們,並將它們包括在項目中。這樣,當項目目錄被複制時,參考DLL將被複制。此外,如果引用dll丟失,該項目將在Visual Studio中投訴。

2

在Windows中,DLL是一個dynamic link library,它將一組編程功能打包在一起。在這個例子中,bass.dll通過這個文件(以及它依賴的任何文件)公開了與音頻處理相關的特性和功能。爲了使用此功能,您需要解決方案中的參考信息,以便Visual Studio在編譯時可以使用link it。在構建應用程序時,DLL通常會被複制到輸出目錄中。

這就是讓代碼正常工作所必需的,剩下的只是偏好或慣例。有些人更喜歡使解決方案中的項目目錄中存在所有文件,以便解決方案資源管理器反映文件系統。通常情況下,您需要將應用程序所依賴的庫存放在解決方案目錄層次結構中的某個位置,以便將整個應用程序打包在一起(例如,使源代碼控制更容易使用)。不過,您不希望將該庫放在BIN目錄或Visual Studio生成的任何目錄中,以避免意外刪除。無論如何,引用是重要的部分,項目或解決方案中的文件不是必需的。

雖然通常情況下,您會希望將外部庫存放在源目錄之外,所以我實際上不會推薦這種結構。我傾向於使用這樣的結構,但同樣,這是所有喜好:

  • 來源:源代碼和項目文件
  • 庫:DLL文件
  • 支持:雜項代碼或項目,但實際上沒有應用程序的一部分(可能是部署腳本)
0

這真的很難猜測,爲什麼別人沒有的東西,但如果我真的猜,I'ld說,以爲那傢伙嵌入所需的dll的資源確保它對應用程序有用。我已經看到這種技術用於嵌入字體或聲音,我不確定它是否可以使用dll工作;但這只是一個猜測。
當然,確保文件可用的最好方法是使用Visual Studio或其他安裝工具loke或InnoSetup創建部署項目,僅舉幾例。

0

在很多情況下,這實際上可能是一個好主意。在我看來他們有3種類型的依賴關係

  1. 來自.Net標準庫的組件。切勿在本地包括這些
  2. 您希望其他開發人員安裝的組件作爲MSI或exe安裝程序包的一部分。這通常意味着他們強烈簽名並在GAC中擁有副本。
  3. 您不希望其他開發人員通過MSI或exe安裝程序安裝的組件。也許是因爲您有第三方或內部圖書館不在GAC中。

在第三種情況下,最簡單的做法是存儲DLL的拷貝源回購。

相關問題