我有一个位于GAC的Interop程序集; Windows资源管理器清楚地显示它在C:\WINDOWS\assembly
文件夹中列出。然而,当我尝试从Visual Studio添加对它的引用时,我无法在“添加引用”对话框中的任何位置看到它。
如果您也遇到过这种情况,原因是什么?我该如何解决这个问题?
(如果你必须知道,那么程序集实际位于C:\WINDOWS\assembly\GAC_MSIL
文件夹中。)
答案 0 :(得分:5)
添加以下注册表项之一,其中是要搜索的目录,MyAssemblies是程序集的类别。注意HKCU适用于当前用户,HKLM适用于同一台计算机上的所有人。
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
答案 1 :(得分:3)
我创建了一个可以帮助您实现目标的工具。 Muse VSReferences将允许您从Add GAC Reference菜单项中向项目添加Global Assembly Cache引用。
答案 2 :(得分:2)
正如其他人所指出的那样,只需在GAC中安装程序集并不能确保它会显示在“添加引用”对话框中。我找到了this MSDN页面,其中包含详细信息。请参阅部分以在“添加引用”对话框中显示程序集。
答案 3 :(得分:0)
“C:\ WINDOWS \ assembly”是一个特殊文件夹,在Windows资源管理器中将列出各个子文件夹中的程序集(和程序集信息)。
对于您的情况,您可能需要将其指向VS.NET中的“C:\ Windows \ assembly \ GAC_MSIL ..... dll”的物理路径。
答案 4 :(得分:0)
您还可以将GAC文件夹映射到虚拟驱动器,然后您可以通过浏览选项卡添加GAC参考。
MZ-Tools答案 5 :(得分:0)
或者,我编辑了Project文件并手动添加了引用。
gacutil /i "Foo.dll"
gacutil /l
会为您提供可供您选择的列表。<Reference Include="Foo, Version=x.x, Culture=neutral, PublicKeyToken=xxx, processorArchitecture=MSIL" />
答案 6 :(得分:-1)
在Visual studio命令提示符下使用此命令
regsvr32 / u shfusion.dll