【问题标题】:Assembly installed into the GAC not showing up in Visual Studio安装到 GAC 中的程序集未显示在 Visual Studio 中
【发布时间】:2018-07-01 02:56:45
【问题描述】:

这听起来与this question 有关,但它们不是一回事。那个问题有 no 程序集出现。除了我安装的那个,我的什么都有。

我希望有人能解决这个问题……我做错了吗?还是我在 VS 中发现了一些错误?

我在 Windows 7 Ultimate 上使用 Visual Studio 2010 Professional Beta 2。我刚刚下载了 Rhino Mocks,并决定使用命令行实用程序 GACUTIL 将其安装到 GAC 中。然后我重新启动了。

您可以在这里看到我的 GAC 中的程序集(点击放大):

以下是 Visual Studio 中可供我使用的程序集列表:

这是我安装它的命令提示符,然后确认它:

C:\Users\jason\Downloads>gacutil -i Rhino.Mocks.dll
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.21006.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly successfully added to the cache

C:\Users\jason\Downloads>gacutil /l |grep -i rhino
Rhino.Mocks, Version=3.6.0.0, Culture=neutral, PublicKeyToken=0b3305902db7183f, processorArchitecture=MSIL

【问题讨论】:

  • 顺便说一句,此问题不太可能与您链接到的问题有关。那家伙的VS安装似乎完全搞砸了。

标签: visual-studio-2010 gac gacutil


【解决方案1】:

Visual Studio 从不列出 GAC 中的所有项目。它仅列出在特定注册表项中注明的项目。

有关更多信息,请参阅此知识库文章:How to display an assembly in the "Add Reference" dialog box

您始终可以通过在磁盘上浏览到程序集来添加对程序集的引用。

【讨论】:

  • 我在 pathCode 中放置了一个 sample.dll 并将其安装到 GAC pathGac 中,添加注册表项时我将选择哪个路径???如果我选择 pathCode 任何引用到添加引用对话框中的项目的项目将正常从 gac 工作?谢谢
  • 该链接现在已损坏,而且:从 GAC 添加内容与通过路径添加内容不同。如果通过浏览添加引用,文件路径本身会被硬编码到应用程序中
【解决方案2】:

我创建了一个完全免费的工具,可以帮助您实现目标。 Muse VSReferences 将允许您从“添加 GAC 引用”菜单项向项目添加全局程序集缓存引用。

【讨论】:

  • +1 很棒的工具,现在我不必担心我可以直接从 GAC 添加的注册表
  • VS2012有这个工具吗?
  • @bunggo:我非正式地修改了扩展以支持 VS2012 和 VS2013。可供下载here
【解决方案3】:

Visual Studio 添加引用对话框独立于 GAC:它查找程序集的文件夹实际上由 AssemblyFolders 注册表项控制。并非 GAC 中出现的所有内容都出现在 Add Reference 中(相反,Add Reference 中并非所有内容都在 GAC 中)。

要添加对 Rhino Mocks DLL 的引用,只需转到“浏览”选项卡,导航到您安装/解压缩/构建 Rhino Mocks 的位置,然后从那里选择 DLL。

【讨论】:

    【解决方案4】:

    您可以从 NuGet 为 WebForms 和 WinForms 安装 Report Viewer DLL:

    nuget> Install-Package Microsoft.ReportViewer
    

    【讨论】:

      【解决方案5】:

      接受的答案没有解决这个问题,说明根据How to: Add or Remove References By Using the Add Reference Dialog Box略有变化

      对于 32 位操作系统,添加以下注册表项之一。

      • [HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\最低版本\AssemblyFoldersEx\MyAssemblies]@="AssemblyLocation"
      • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\最低版本\AssemblyFoldersEx\MyAssemblies]@="AssemblyLocation"

      对于 64 位操作系统,在 32 位注册表配置单元中添加以下注册表项之一。

      • [HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\VersionMinimum\AssemblyFoldersEx\MyAssemblies]@="AssemblyLocation"
      • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\ 最低版本\AssemblyFoldersEx\MyAssemblies]@="AssemblyLocation"

      VersionMinimum 是适用的最低 .NET Framework 版本。如果 VersionMinimum 为 v3.0,则在 AssemblyFoldersEx 中指定的文件夹适用于面向 .NET Framework 3.0 及更高版本的项目。

      AssemblyLocation 是您希望出现在 Add Reference 对话框中的程序集的目录,例如 C:\MyAssemblies。

      在 HKEY_LOCAL_MACHINE 节点下创建注册表项允许所有用户在 添加引用 对话框中查看指定位置的程序集。在 HKEY_CURRENT_USER 节点下创建注册表项只会影响当前用户的设置。

      再次打开添加参考对话框。程序集应出现在 .NET 选项卡上。如果没有,请确保程序集位于指定的 AssemblyLocation 目录中,重新启动 Visual Studio,然后重试。

      在 Windows 10 上测试并使用 Visual Studio 2017 Enterprise

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多