【发布时间】:2009-09-21 18:38:16
【问题描述】:
我是 ASP.NET 新手,有一些基本的疑问。
1)公共程序集部署在GAC中。即使我选择“添加引用”,我也可以
不指向 c:\windows\assembly(我希望这是不可能的)。我仍然需要参考
源项目的..\Bin文件夹中的程序集(自定义程序集)。背后有什么考虑吗?
2) 为什么 GAC 中不允许使用 exe?
【问题讨论】:
标签: .net asp.net assemblies gac
我是 ASP.NET 新手,有一些基本的疑问。
1)公共程序集部署在GAC中。即使我选择“添加引用”,我也可以
不指向 c:\windows\assembly(我希望这是不可能的)。我仍然需要参考
源项目的..\Bin文件夹中的程序集(自定义程序集)。背后有什么考虑吗?
2) 为什么 GAC 中不允许使用 exe?
【问题讨论】:
标签: .net asp.net assemblies gac
如果您需要手动访问 GAC 中的程序集,我知道的最简单的方法是 Start > Run > "C:\windows\assembly\gac_msil"。 GAC 中的每个程序集都有一个文件夹,因此您可以在那里浏览并找到所需 DLL 的确切路径,该路径通常如下所示:
C:\windows\assembly\GAC_MSIL\System.Net\3.5.0.0__b03f5f7f11d50a3a\System.Net.dll
这只是name\version__publickey\filename.dll
可能还有一种更“正确”的方式,所以如果有人知道那是什么,请纠正我!
关于第二个问题,我只能假设。 GAC 用于类库而不是可执行文件确实是有道理的,但这主要是哲学上的。我不知道任何一种技术论点。
编辑:答案下方可爱的第一条评论原来是一个误解,并已解决:)
【讨论】:
是的,GAC 用于库,因为它用于建立对集合库的全局访问。与不同应用程序共享的一种。为什么在 GAC 中需要一个 exe(应用程序)?了解这一点可能有助于获得更好的答案。
至于问题 1,我不确定您访问的是什么。人们混淆的一个概念是 GAC 不是物理位置。它只是一个注册表。如果您在 gac 中注册,它不会将该 dll 移动到框架目录中。
【讨论】:
assembly文件夹中。
我创建了一个完全免费的工具,可以帮助您实现目标。 Muse VSReferences 将允许您从“添加 GAC 引用”菜单项向项目添加全局程序集缓存引用。
【讨论】: