我越来越困惑
一劳永逸
VS 添加参考(/net 选项卡)说 dll 的 gac 在这里:
我找到了这个包含 GAC 的文件夹:(ps 为什么是 3 Gac 的类型?)
还有这个包含 GAC 的文件夹:
有人可以解决我的头痛吗?
我越来越困惑
一劳永逸
VS 添加参考(/net 选项卡)说 dll 的 gac 在这里:
我找到了这个包含 GAC 的文件夹:(ps 为什么是 3 Gac 的类型?)
还有这个包含 GAC 的文件夹:
有人可以解决我的头痛吗?
%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)。
安装 .NET 4 后,您的系统中实际上有两个GAC,一个用于 .NET 2-3.5 版,一个用于 4 版。这已经在此处进行了解释。这些目录中的每一个都有许多子文件夹,其中包含带有 x86、x64 和 MSIL 代码的程序集图像。
Program Files中的“参考程序集”目录不是GAC。
还要回答 Alex Dn 的评论:在 GAC 中安装 DLL 后,您不应该关心 DLL 的去向。的真正目的gacutil
是向您隐藏这些知识,以便.NET 不会采用熟悉的方式从部分“逆向工程”的人那里获取依赖项,然后例如在他们的应用程序中硬编码路径。
我认为出于历史原因,它有两条路径。
他们必须为每个平台拆分程序集(例如 MSIL、Native 32、Native 64、Embedded、ARM 等)
因此,根据您编译流程的方式,您将链接一个或另一个部门。所以在可移植的.net(仅限 MSIL)和托管 C++(仅限本机)之间......
但我完全不确定:)