如何使用 GAC 中的程序集
本文关键字:程序集 GAC 何使用 | 更新日期: 2023-09-27 18:31:46
我在C:'Windows'Microsoft.NET'assembly'GAC_32'MyFolder'
中有一个dll
,我想在我的C#
项目中使用。
我试图添加引用(引用->添加引用->浏览),看起来很好,但在运行时程序被AccessViolationException
压碎了。
我不确定引用是否是问题所在,所以我决定调查一下,我在这篇文章中找到了一个答案,说你不能以这种方式引用GAC
中的程序集。我没有找到的是我应该怎么做。
当我删除对dll
的引用时,程序当然不会编译。
在使用 GAC 程序集之前,您需要了解一些事项。
1) GAC 中的程序集必须具有强名称。
2) 您不能只是将文件复制到那里,下面介绍了如何将程序集正确部署到 GAC。
3) A strong-named assembly can only use types from other strong-named assemblies.
4) 下面介绍如何在编译时(使用编译器选项)和运行时引用强名称程序集,以及如何从 Visual Studio 引用 GAC 程序集。另请阅读此线程中Hans Passant的答案。
可能是"在Visual Studio中从GAC引用DLL"的副本。特别是看看这个答案,它解释了为什么从 GAC 添加引用是一种不好的做法。但是,您仍然可以使用计算机上的完整路径执行此操作。请考虑以下方案:
- 您的参考是第三方 DLL
- 你依赖于这样一个事实,即要部署到的计算机已经注册了该 dll
分辨率:
- 将您依赖的第三方程序集复制到所选的某个文件夹中。
- 将这些引用仅用于编译目的。您不会运送这些物品。
- 安装后,将从该计算机上的 GAC 解析这些引用。如果没有,则需要将这些程序集安装到 GAC。
例如,生成 SharePoint 自定义应用程序的用户使用此方案。