简体   繁体   English

如何从Visual Studio中删除重复的程序集选择“工具箱项”对话框?

[英]How to remove duplicated assemblies from the Visual Studio Choose Toolbox Items dialog?

I have duplicated assemblies in the .NET Framework Components tab of a Choose Toolbox Items menu item: 我在“选择工具箱项”菜单项的“.NET Framework组件”选项卡中有重复的程序集: 在此输入图像描述

The full code for assembly loading can be found here , but the main idea is following: 可以在这里找到装配加载的完整代码,但主要思想如下:

  • Probe assembly in user docs 用户文档中的探针组件
  • Probe assembly in VS extensions VS扩展中的探针组件
  • Probe assembly near the package assembly 封装组件附近的探针组件
  • Load toolbox items into the toolbox by calling IToolboxService.AddToolboxItem() method 通过调用IToolboxService.AddToolboxItem()方法将工具箱项加载到工具箱中

The actual dll that is really loaded is v16.1.2.0. 真正加载的实际dll是v16.1.2.0。
v15.1.1.100 и 15.1.2.0 do not exist on a disk and I can't find any trace of these rudimentary assemblies on my disk and in registry. v15.1.1.100和15.1.2.0在磁盘上不存在,我在磁盘和注册表中找不到这些基本程序集的任何痕迹。

How can I remove outdated entries from the list? 如何从列表中删除过期的条目?

This situation is caused by the broken toolbox cache. 这种情况是由工具箱缓存损坏引起的。

To fix it, try the following: 要解决此问题,请尝试以下操作:

  • Close all instances of VS 关闭VS的所有实例
  • Go do %LOCALAPPDATA%\\Microsoft\\VisualStudio\\NN.N , where NN.N is the version of VS you're using 去做%LOCALAPPDATA%\\Microsoft\\VisualStudio\\NN.N ,其中NN.N是你正在使用的VS的版本
  • Delete all files with *.tbd extension. 删除所有扩展名为*.tbd文件。 These files are hidden, so ensure that you have the approprate setting enabled. 这些文件是隐藏的,因此请确保您已启用适当的设置

Play around with gacutil.exe utility: https://msdn.microsoft.com/en-US/library/ex0ss12c(v=vs.110).aspx 使用gacutil.exe实用程序: https ://msdn.microsoft.com/en-US/library/ex0ss12c( v = vs1010).aspx

You, probably, need to run gacutil.exe /l to get a list of all assemblies, then find those you want to delete and then run gacutil.exe /ur ... with respective values. 您可能需要运行gacutil.exe /l以获取所有程序集的列表,然后找到要删除的程序集,然后使用相应的值运行gacutil.exe /ur ...

These are registered design time assemblies / controls. 这些是注册的设计时组件/控件。 These are specified in registry at the below location for each .NET framework under the AssemblyFoldersEx 这些在AssemblyFoldersEx下的每个.NET框架的以下位置的注册表中指定

Here are the locations 这是位置

[HKCU or HKLM]\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v{version}\AssemblyFoldersEx
[HKCU or HKLM]\SOFTWARE\Microsoft\.NETFramework\v{version}\AssemblyFoldersEx

[HKCU or HKLM]\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Silverlight\v3.0\AssemblyFoldersEx
[HKCU or HKLM]\SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v3.0\AssemblyFoldersEx

Remove any duplicates by removing sub-keys. 删除子键删除所有重复项。

Hope this helps. 希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM