2009-06-30 40 views
3

我編寫我們公司內部使用的程序。我創建了幾個支持DLL,我在很多項目中都參考了它。 (例如通用數據訪問幫助程序) 而不是在每個程序目錄中都有一個「datatools.dll」的副本(似乎是默認行爲),我希望有一個可以被許多程序引用的副本。有點像我自己的system32目錄。在VS部署項目中引用共享DLL

我爲我的項目添加了「引用路徑」。我編譯項目然後編譯部署項目。安裝程序工作正常。共享的DLL在我的參考路徑中。 但是,當我運行該程序時出現錯誤 「System.IO.FileNotFoundException:無法加載文件或程序集'datatools.dll,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依賴項之一。該系統找不到指定的文件。」 如果我將datatools.dll移動到exe文件所在的文件夾中,程序可以毫無問題地運行。

我可以爲共享dll創建和使用共享位置嗎? 或者這只是一個壞主意?

回答

3

你可以(使用VS2k8,看在項目屬性選項卡)「時間,把他們在GAC

+0

謝謝大家的快速回復。我正在使用VS2k8。我看着你和Yuliy提到的Sign選項,但是擔心它超出了我的頭。 我只會在我的用戶機器上存在多個副本。 – mohnston 2009-06-30 18:41:24

2

如果您使用.NET簽署,對於這類問題的典型方法是部署這些共享程序集到GAC(全局程序集緩存),理想情況下是它自己的部署項目。

1

聽起來像你有一個多項目解決方案。檢查以確保引用DataTools.dll程序集的所有項目都指向正確的(新)位置。

根據你的IDE,你可能需要嘗試一些時髦的東西,比如刪除舊的引用,構建它(並觀察它崩潰),然後從新的位置重新添加它。