GAC文件夹 - 太多了?

时间:2012-04-24 13:20:02

标签: .net visual-studio-2010 .net-4.0 clr gac

我感到困惑

一次,为所有

VS添加引用(/ net tab)说dll的gac在这里: enter image description here

我发现这个包含GAC的文件夹:( p.s.为什么有3个Gac的类型?) enter image description here

此文件夹包含GAC:

enter image description here

有人可以解决我的头痛吗?

3 个答案:

答案 0 :(得分:3)

%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。 CLR 2.0(.Net 2.0到3.5)使用%windir%\assembly,而CLR大于2.0(目前仅4.0)使用%windir%\Microsoft.NET\assembly

答案 1 :(得分:3)

安装.NET 4后,系统中实际上有两个 GAC,一个用于.NET版本2-3.5,另一个用于版本4.这已经是explained here。每个目录都有许多子文件夹,其中包含代码为x86,x64和MSIL的汇编映像。

程序文件中的“参考装配”目录不是 GAC。

回答Alex Dn的评论:在GAC中安装DLL后,你不应该关心DLL的去向。 gacutil的目的是将这些知识隐藏起来,以便.NET不会熟悉从部分“逆向工程”工作原理的人那里获取依赖关系。硬编码应用程序内的路径。

答案 2 :(得分:0)

我认为出于历史原因它有两条路径。

他们必须拆分每个平台的程序集(例如MSIL,Native 32,Native 64,Embedded,ARM,...)

因此,根据您编译流程的方式,您将链接一个或另一个deps。 因此,在便携式.net(仅MSIL)和托管C ++(仅限Native)之间......

但我根本不确定:)