为什么Visual Studio中“添加引用”对话框中的.NET选项卡不列出GAC的内容?

时间:2009-05-16 08:33:14

标签: .net visual-studio-2008 gac

重复Getting assemblies to show in the .NET tab of Add Reference

所以,我正在使用Visual C#2008 Express Edition,我刚刚走了一段路,因为我发现我假设“添加引用”对话框的.NET选项卡列出了GAC不正确。

这对我来说有点问题,因为我想从我的项目中引用的程序集只能在GAC中使用。 (这是从XNA 2.0 redistributalbe获得的Microsoft.XNA.Framework v2.0,据我所知,它只安装在GAC中)。

我通过在.csproj文件中手动设置对Microsoft.XNA.Framework的引用然后从缓存中获取dll的副本来解决此问题。然后我能够为DLL创建一个目录,将它添加到Visual Studio的注册表中的汇编目录列表中,然后瞧!我可以在.NET选项卡中看到它。

这一切对我来说似乎有些不合适,我不认为我最初的假设(.NET选项卡显示GAC的内容)是不合理的或者是不常见的。知道比我更多的人能告诉我吗

  • 为什么没有显示GAC的内容?文档只是说它们不是,但是有充分的理由吗?
  • 实际上有一种方法可以列出GAC的全部内容吗?我错过了某个地方的勾选框?

任何非常感谢的信息。

2 个答案:

答案 0 :(得分:2)

您假设.NET选项卡意味着GAC,但事实并非如此。它表示已安装的组件,可能在GAC中,也可能不在GAC中。某些安装位于Program Files下,然后这些程序集在.NET选项卡中可见。

当您添加对项目的引用(忽略Web站点项目,因为它们是一个私生子异常并需要DIAF)时,.NET运行时将使用从可执行文件目录中开始的级联搜索找到该程序集,检查PATH环境变量并以GAC结尾。我没有链接,但MSDN上至少有一篇好文章专门解释了这一点。

上面似乎没有直接关联,但是从某种意义上说,当你开发时,你可以在开发机器的某个地方引用一个程序集,但是当你将应用程序分发到另一台机器时生产使用,组装不一定必须与开发机器上的相同。在开发时,您可以将程序集置于本地,或者在程序文件中,但如果该程序集在GAC中则在另一台计算机上,那么您的程序应该可以正常工作。

(通常,当您安装SDK时,安装程​​序将足够智能,以创建在.NET选项卡中显示dll所需的注册表项。您的XNA框架示例可能归结为您安装运行时包而不是SDK或东西。)

希望有所帮助。

答案 1 :(得分:-1)

下载并使用 Muse VSReferences扩展程序。它将自动为您完成所有这些

取值