Tom*_*ter 170
是的,所以基本上它是一种保持DLL全局可访问而不用担心冲突的方法.没有DLL地狱.每个架构和版本都有自己的居住地.
它也有自己的方式在资源管理器中浏览它,所以如果你去
C:\ WINDOWS \总成
在Windows资源管理器中,它列出了所有DLL.
但如果你开火了cmd
,你可以看到它是如何构建的:
C:\Users\tritter>cd C:\Windows\assembly C:\Windows\assembly>dir Directory of C:\Windows\assembly 07/20/2009 02:18 PM <DIR> GAC 06/17/2009 04:22 PM <DIR> GAC_32 06/17/2009 04:22 PM <DIR> GAC_64 06/17/2009 04:22 PM <DIR> GAC_MSIL ...snip... 0 File(s) 0 bytes 9 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly>cd GAC_64 C:\Windows\assembly\GAC_64>dir Directory of C:\Windows\assembly\GAC_64 06/17/2009 04:22 PM <DIR> . 06/17/2009 04:22 PM <DIR> .. 01/19/2008 09:54 AM <DIR> blbproxy ...snip... 01/19/2008 09:54 AM <DIR> srmlib 01/19/2008 06:11 AM <DIR> System.Data 01/19/2008 06:11 AM <DIR> System.Data.OracleClient ...snip... 0 File(s) 0 bytes 34 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly\GAC_64>cd System.Data C:\Windows\assembly\GAC_64\System.Data>dir Directory of C:\Windows\assembly\GAC_64\System.Data 01/19/2008 06:11 AM <DIR> . 01/19/2008 06:11 AM <DIR> .. 04/11/2009 12:20 PM <DIR> 2.0.0.0__b77a5c561934e089 0 File(s) 0 bytes 3 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly\GAC_64\System.Data>cd 2.0.0.0__b77a5c561934e089 C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089>dir Directory of C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089 04/11/2009 12:20 PM <DIR> . 04/11/2009 12:20 PM <DIR> .. 04/11/2009 12:12 PM 3,008,512 System.Data.dll 1 File(s) 3,008,512 bytes 2 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089>
在这里,您可以看到System.Data的版本2.0.0.0__b77a5c561934e089.
DLL由5部分标识:
虽然前3个通常是大的.
Ste*_*owe 89
让我们分解一下:
因此,GAC必须是存储代码库的地方,以便机器上运行的所有应用程序都可以访问它们.
Nol*_*rin 63
安装公共语言运行库的每台计算机都有一个称为全局程序集缓存的机器级代码缓存.全局程序集缓存存储专门指定由计算机上的多个应用程序共享的程序集.
您应该只在需要时通过将它们安装到全局程序集缓存中来共享程序集.作为一般准则,将程序集依赖项保持为私有,并在应用程序目录中查找程序集,除非明确要求共享程序集.此外,没有必要将程序集安装到全局程序集缓存中,以使它们可以访问COM互操作或非托管代码.
MSDN包含的东西可能让你感到惊讶......你通常可以像文章一样阅读它.顶部直截了当,最重要的部分,错综复杂的细节更深层次.它肯定比我能解释得更好.
请注意,Visual Studio在" 引用"窗口的".NET"选项卡中显示GAC中的所有DLL .(在解决方案资源管理器中右键单击项目,然后选择"添加引用".)这应该为您提供更切向的想法.
小智 11
首先,Exe Application从当前目录引用到子目录.然后,系统目录.VS6.0系统目录是..windows/system32..NET系统目录类似于以下GAC路径.
GAC路径
1)C:\ Windows\Assembly(适用于.NET 2.0~3.5)
2)C:\ Windows\Microsoft.NET\assembly(适用于.NET 4.0)
如何将程序集安装到GAC(作为管理员)
1)拖放
2)将GacUtil.exe与Visual Studio命令提示符一起使用
gacutil -i [Path][Assembly Name].dll
Run Code Online (Sandbox Code Playgroud)
如何从GAC卸载程序集(作为管理员)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh
Run Code Online (Sandbox Code Playgroud)
小智 10
全局程序集缓存(GAC)是Windows目录中的一个文件夹,用于存储专门指定由系统上执行的所有应用程序共享的.NET程序集.通过在全局程序集缓存(GAC)中注册程序集,可以在计算机上的多个应用程序之间共享程序集.GAC是机器范围内由.NET Framework维护的程序集的本地缓存.