7

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

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

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

这个页面说:

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

参考这句话,我想知道如果需要的话,如何让你的项目的DLL共享程序集给其他消费者?

4

4 回答 4

9

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

正在搜索的路径由 Visual Studio 通过查找以下注册表项来定位:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetFramework\{Version}\AssemblyFoldersEx\

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

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

于 2011-02-17T13:47:49.507 回答
4

另一个简单的选项是在 Visual Studio 中手动将项目文件编辑为 XML(您必须先卸载项目),然后<Reference Include="<name of dll>" />在 MSBuild 项目文件中添加节点。重新加载项目后,VS 将毫无问题地拾取引用。

于 2014-03-26T10:52:09.473 回答
0

如果你想将全局程序集缓存引用添加到你的 VS2010 项目,你可以使用一个扩展:Muse.VSExtensions

它有一些怪癖,但做得不错。一探究竟...

于 2012-03-02T21:09:45.610 回答
0

答案是属性窗口中的参考路径,您必须使用 GAC 路径进行设置请在此处查看我的帖子:

于 2015-06-19T15:11:30.790 回答