3

我越来越困惑

一劳永逸

VS 添加参考(/net 选项卡)说 dll 的 gac 在这里: 在此处输入图像描述

我找到了这个包含 GAC 的文件夹:(ps 为什么是 3 Gac 的类型?) 在此处输入图像描述

还有这个包含 GAC 的文件夹:

在此处输入图像描述

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

4

3 回答 3

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

于 2012-04-24T13:55:36.770 回答
3

安装 .NET 4 后,您的系统中实际上有两个GAC,一个用于 .NET 2-3.5 版,一个用于 4 版。这已经在此处进行了解释。这些目录中的每一个都有许多子文件夹,其中包含带有 x86、x64 和 MSIL 代码的程序集图像。

Program Files中的“参考程序集”目录不是GAC。

还要回答 Alex Dn 的评论:在 GAC 中安装 DLL 后,您不应该关心 DLL 的去向。的真正目的gacutil是向您隐藏这些知识,以便.NET 不会采用熟悉的方式从部分“逆向工程”的人那里获取依赖项,然后例如在他们的应用程序中硬编码路径。

于 2012-04-24T13:55:51.793 回答
0

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

他们必须为每个平台拆分程序集(例如 MSIL、Native 32、Native 64、Embedded、ARM 等)

因此,根据您编译流程的方式,您将链接一个或另一个部门。所以在可移植的.net(仅限 MSIL)和托管 C++(仅限本机)之间......

但我完全不确定:)

于 2012-04-24T13:47:07.147 回答