如何使用 GAC 中的程序集

本文关键字:程序集 GAC 何使用 | 更新日期: 2023-09-27 18:31:46

我在C:'Windows'Microsoft.NET'assembly'GAC_32'MyFolder'中有一个dll,我想在我的C#项目中使用。
我试图添加引用(引用->添加引用->浏览),看起来很好,但在运行时程序被AccessViolationException压碎了。
我不确定引用是否是问题所在,所以我决定调查一下,我在这篇文章中找到了一个答案,说你不能以这种方式引用GAC中的程序集。我没有找到的是我应该怎么做。
当我删除对dll的引用时,程序当然不会编译。

如何使用 GAC 中的程序集

在使用 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 添加引用是一种不好的做法。但是,您仍然可以使用计算机上的完整路径执行此操作。请考虑以下方案:

  1. 您的参考是第三方 DLL
  2. 你依赖于这样一个事实,即要部署到的计算机已经注册了该 dll

分辨率:

  1. 将您依赖的第三方程序集复制到所选的某个文件夹中。
  2. 将这些引用仅用于编译目的。您不会运送这些物品。
  3. 安装后,将从该计算机上的 GAC 解析这些引用。如果没有,则需要将这些程序集安装到 GAC。

例如,生成 SharePoint 自定义应用程序的用户使用此方案。