我感到困惑
一次,为所有
VS添加引用(/ net tab)说dll的gac在这里:
我发现这个包含GAC的文件夹:( p.s.为什么有3个Gac的类型?)
此文件夹包含GAC:
有人可以解决我的头痛吗?
答案 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)之间......
但我根本不确定:)