2010-08-23 57 views
7

我正在使用w7,64位和vs.net 2010.Visual Studio 2010「添加引用」正在將dll複製到bin目錄中?

我在添加引用對話框中添加對組件的引用。該組件是第三方DLL。

從歷史上看,在w7 32bit上,它會在我的web.config(在程序集標籤內)引用這個dll,並且它不會將dll複製到bin目錄中。

但是,在64位w7上,dll被複制到bin目錄,web.config根本沒有更新。

爲什麼dll被複制到bin目錄? 感謝

解決方法:(更新) 這些職位給我我需要的線索。

如果您的系統在GAC中找不到dll,VS.NET會將dll複製到bin目錄。 GAC中的程序集(在工作站上註冊)可以通過查看C:\ Windows \ Assembly目錄找到。

在vs.net'添加引用對話框'中列出的組件可能會或可能不在gac中。由於組件在「添加引用」對話框中列出,並不意味着它已在本地工作站上註冊。我導航到組件目錄,並將所需的DLL拖到C:\ Windows \ Assembly目錄。我關閉並重新打開vs.net並瀏覽相同的文件並單擊添加參考。

**這增加了裝配參考我的web.config(而且也沒有將dll文件拷貝到我的網站bin目錄下)****

回答

5

它獲取副本到bin目錄,以便可執行文件可以找到它。除非dll安裝在GAC中,否則它不會找到它。

+2

該DLL是在GAC(因爲它確實出現在'添加引用'對話窗口),所以我期望它不復制dll – David 2010-08-23 15:13:52

+2

+1,這個答案是正確的。添加引用對話框與GAC無關。它只列出已註冊的引用程序集,它從不列出GAC目錄中的任何內容。 – 2010-08-23 16:06:57

11

在基準,有一個Copy Local屬性(在屬性窗口中),它確定程序集是否應該被複制到輸出目錄。

至於爲什麼,可能也無妨其他參考,MSDN說:

如果部署/複製包含到在GAC中註冊的自定義組件的引用的應用程序,組件將不要在應用程序中部署/複製,而不管複製本地設置。

+0

在vs.net 2010中,這是一個網站(而不是Web應用程序),因此解決方案中沒有參考文件夾。我只有一個bin目錄,如果我查看dll的屬性,我只需要「自動刷新路徑」,「文件名」和「完整路徑」屬性。我沒有「複製本地」的財產。 – David 2010-08-23 15:08:55

+0

@David如果您將''條目添加到web.config並刪除了DLL,您的網站是否正常工作? – bdukes 2010-08-23 15:28:39

1

除了之前的迴應:我認爲Visual Studio根據DLL不在您的計算機GAC中來確定Copy Local屬性是否設置爲true。
它防止VS複製本地.net DLL,所以它應該默認情況下只複製「自定義」DLL。

+0

這是一個asp.net「網站」而不是「Web應用程序」,我無法更改複製本地屬性。另外,組件在gac中,所以它應該只是在web.config中添加一個引用。不知道爲什麼,這是否與w7 64位工作站有關? – David 2010-08-23 15:12:58

+0

你確定這是一個「網站」?我只是讀到一個網站沒有Bin文件夾...(http://bit.ly/aOlnfD)。這很奇怪,因爲我可以更改該複製本地值。這聽起來很奇怪,行爲不同於32位&64位。可能是因爲DLL不是以64位編譯的,而且編譯器在複製的DLL上執行了一些操作(與GAC中的完全一樣嗎?)。但這聽起來很奇怪。 – 2010-08-23 15:34:32

相關問題