Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net GAC文件夹-太多?_.net_Visual Studio 2010_.net 4.0_Clr_Gac - Fatal编程技术网

.net GAC文件夹-太多?

.net GAC文件夹-太多?,.net,visual-studio-2010,.net-4.0,clr,gac,.net,Visual Studio 2010,.net 4.0,Clr,Gac,我弄糊涂了 一劳永逸 VS add引用(/net选项卡)显示dll的gac在这里: 我找到了这个包含GAC的文件夹:(顺便问一下,为什么有3种GAC类型?) 以及包含GAC的此文件夹: 有人能治好我的头痛吗?出于历史原因,我认为这有两种途径 他们必须为每个平台拆分程序集(例如MSIL、本机32、本机64、嵌入式、ARM等) 因此,根据您编译流程的方式,您将链接一个或另一个DEP。 因此,在便携式.NET(仅MSIL)和托管C++(仅是本地)之间… 但我一点也不确定:)

我弄糊涂了

一劳永逸

VS add引用(/net选项卡)显示dll的gac在这里:

我找到了这个包含GAC的文件夹:(顺便问一下,为什么有3种GAC类型?)

以及包含GAC的此文件夹:


有人能治好我的头痛吗?

出于历史原因,我认为这有两种途径

他们必须为每个平台拆分程序集(例如MSIL、本机32、本机64、嵌入式、ARM等)

因此,根据您编译流程的方式,您将链接一个或另一个DEP。 因此,在便携式.NET(仅MSIL)和托管C++(仅是本地)之间…


但我一点也不确定:)

文件夹包含.Net Framework附带的那些程序集,这些程序集在设计和构建新组件时非常有用。请参阅。这根本不是GAC


有两个不同的GAC,一个用于CLR 2.0,另一个用于CLR 4.0。一个
%windir%\assembly
用于CLR 2.0(.Net 2.0至3.5),而
%windir%\Microsoft.Net\assembly
用于大于2.0的CLR(目前仅4.0).

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

程序文件中的“引用程序集”目录不是GAC


同样要回答Alex Dn的评论:在GAC中安装DLL后,您不应该关心DLL的去向。
gacutil
的目的就是向您隐藏这些知识,这样.NET就不会以熟悉的方式从部分“逆向工程”的人那里获取依赖关系“东西是如何工作的,然后在应用程序中硬编码路径。

我想扩展这个问题:假设我有C:\DLL\MyGAC.DLL。当我使用gacutil将其添加到GAC时,它是否会将该DLL复制到这些文件夹中?我将在add.NET引用窗口中看到什么DLL路径?您能编辑不同版本的文件夹吗?您能编辑不同版本的文件夹吗?而且,根据Alex的问题,它会将文件复制到这些文件夹吗?@RoyiNamir:当然,但是,编辑不同的版本是什么意思?我的意思是,如果你能加强你的答案(编辑它):不同的文件夹(gac,gac_32,gac_msil),根据Alex的问题-它会将文件复制到这些文件夹中吗