2014-11-23 106 views
-1

我在C:\Windows\Microsoft.NET\assembly\GAC_32\MyFolder\中有dll,我想在我的C#项目中使用它。
我试图添加引用(引用 - >添加引用 - >浏览),它似乎很好,但在运行时程序粉碎AccessViolationException
我不确定参考是否是问题,所以我决定研究它,并在post中找到答案,说您不能通过这种方式从GAC引用装配。我没有找到的是我该怎么做。
当我删除对dll的引用时,程序当然不会编译。如何使用GAC中的程序集?

+0

请添加您的代码,几乎不可能从任何地方帮助吸取问题 – 2014-11-23 08:33:21

+0

为什么您需要代码?我是一个技术问题。我在'GAC'中有'dll',我该如何使用它?我不希望人们弄清楚为什么我会得到一个异常,只要告诉我是否像我应该引用'dll'。 – GM6 2014-11-23 08:40:54

+1

@ GM6 - 您是如何将其添加到GAC的?你用过GacUtil吗?你使用的是什么命令参数?当你说“在运行时”时,你的意思是在VS.net IDE中还是在不同的机器上执行?您如何知道DLL在GAC中正确注册?您是否使用过GacUtil列出目标机器上的GAC内容? – PhillipH 2014-11-23 08:47:45

回答

1

在使用GAC程序集之前,您需要了解一些事项。

1)GAC中的组装必须是strong-named

2)您不能仅仅复制文件,here如何正确地将程序集部署到GAC。

3)A strong-named assembly can only use types from other strong-named assemblies.

4)Here的如何在编译时来引用一个强名称组件(使用编译选项)和运行时间和here的如何从Visual Studio引用GAC组件。请阅读Hans Passant在this的回答。

0

可能的副本'Referencing DLL from GAC in Visual Studio'。请特别注意this answer,这解释了为什么从GAC添加引用是不好的做法。不过,您仍然可以使用机器上的完整路径来完成此操作。考虑以下情形:

  1. 参考是第三方DLL
  2. 你依靠的事实,你正在部署的机器已经有一个DLL注册

分辨率:

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

这个场景被那些构建SharePoint自定义应用的人使用(例如)。

相关问题