重复: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的内容)是不合理的或者是不常见的。知道比我更多的人能告诉我吗
任何非常感谢的信息。
答案 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扩展程序。它将自动为您完成所有这些
取值