2012-04-24 67 views
2

林感到困惑GAC文件夾 - 太多?

一次,所有

的VS添加引用(/淨標籤)說,DLL的GAC在這裏: enter image description here

而且我發現這個文件夾包含GAC :(ps爲什麼3個Gac的類型?) enter image description here

而且這個文件夾裏面含有GAC:

enter image description here

有人能解決我的頭痛嗎?

+1

我想擴展這個問題:假設我有C:\ DLL \ MyGAC.dll。當我使用gacutil將其添加到GAC時,是否將該DLL複製到這些文件夾中的任何一個?和什麼DLL PATH我會在添加.NET參考窗口中看到? – 2012-04-24 13:27:10

回答

2

安裝.NET 4後實際上有 GACS在您的系統,一個用於.NET版本的2-3.5,一個用於版本4.這已經是explained here。這些目錄中的每一個都有許多子文件夾,其中包含x86,x64和MSIL代碼的程序集映像。

Program Files 中的「引用程序集」目錄不是是GAC。

要回答Alex Dn的評論:您不應該關心將DLL安裝到GAC中後DLL的位置。 gacutil的目的是爲了隱藏你的這些知識,這樣.NET就不會採用熟悉的方式來從部分「反向工程」工作人員獲取依賴關係,然後在其應用程序內硬編碼一個路徑。

+0

請問您可以編輯,關於不同的文件夾版本嗎? – 2012-04-25 07:02:04

+0

另外 - 仍然,根據亞歷克斯問題 - 它將文件複製到這些文件夾? – 2012-04-25 07:07:08

+0

@RoyiNamir:當然,但是你認爲編輯不同版本的含義是什麼? – Jon 2012-04-25 07:45:43

0

我認爲這是出於歷史原因的兩條路徑。

他們必須拆分組件爲每個平臺(如MSIL,原生32,原生64,嵌入式,ARM,...)

所以,這取決於你如何編譯過程中,您將一個或另一個DEPS。 所以便攜式.NET(僅MSIL)和託管C++(僅適用於母語)...之間

但我不知道在所有:)

2

%ProgramFiles%\Reference Assemblies\Microsoft\Framework\v4.0"文件夾中包含那些使用.NET Framework組件出貨這對於在設計和構建新組件時引用很有用。見http://blogs.msdn.com/b/msbuild/archive/2007/04/12/new-reference-assemblies-location.aspx。這是所有GAC中的而非

有兩個不同的GAC,一個用於CLR 2.0,另一個用於CLR 4.0。一個%windir%\assembly由CLR 2.0(.Net 2.0至3.5)使用,而%windir%\Microsoft.NET\assembly由大於2.0(當前僅4.0)的CLR使用。

+0

你可以請編輯,關於不同的文件夾版本? – 2012-04-25 07:01:45