如何从GAC引用程序集?

Lea*_*ner 7 strongname gac reference .net-4.0 visual-studio-2010

我已将强名称程序集安装TestReflection到GAC中(我使用的是.NET 4.0和VS 2010).

不同版本的TestReflectionDLL在.NET 4.0(C:\WINDOWS\Microsoft.NET\assembly\GAC_32\TestReflection\)的GAC中,但是,程序集不会出现在VS 2010的"项目" - >"添加引用"框中.

如何在设计时从另一个项目中引用部署在GAC中的我的程序集?

这个页面说:

您无法添加全局程序集缓存(GAC)中的引用,因为它严格地是运行时环境的一部分.

参考这个声明,我想知道如果需要,如何为其他消费者制作项目的DLL共享程序集?

Pet*_*sen 9

"添加引用"对话框的.Net选项卡中显示的dll实际上不是GAC中注册的那些.通过在文件系统上搜索几条路径找到它们.

Visual Studio通过查找以下注册表项找到要搜索的路径:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetFramework\{Version}\AssemblyFoldersEx\
Run Code Online (Sandbox Code Playgroud)

应该已经添加了一些键,因此如果您希望自己的dll显示在.Net选项卡上,您可以将其添加到其中定义的文件夹之一.您还可以添加一个指向自定义文件夹的新注册表项,该文件夹只包含您自己的dll.

GAC仅用于在部署应用程序后在运行时加载程序集,因此我认为您不应该在开发时使用它.部署应用程序时,请确保在引用上将"Copy local"设置为false,这样dll就不会被复制到bin文件夹,然后将其安装到GAC中,而是从那里加载它.