Visual Studio 如何将自定义图标添加到解决方案资源管理器

How to add custom icons to solution explorer in Visual Studio

我正在尝试将自定义图标添加到 Visual Studio 中的解决方案资源管理器,方法与 FileIcons extension 相同。

我想我已经为 Visual Studio 做了所有正确的事情,将新图标与以 .d.di 扩展名结尾的文件相关联,但 Visual Studio 仍然没有'在解决方案资源管理器中显示任何图标。

这是使用 ManifestFromResources.exe 生成的清单:

<?xml version="1.0" encoding="utf-8"?>
<!-- This file was generated by the ManifestFromResources tool.-->
<!-- Version: 14.0.50929.2 -->
<ImageManifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/VisualStudio/ImageManifestSchema/2014">
  <Symbols>
    <String Name="Resources" Value="/VisualDLS;Component/Icons" />
    <Guid Name="AssetsGuid" Value="{872b4702-eabf-444b-b6b3-96dc64531f74}" />
    <ID Name="d" Value="0" />
  </Symbols>
  <Images>
    <Image Guid="$(AssetsGuid)" ID="$(d)">
      <Source Uri="$(Resources)/d.png">
        <Size Value="32" />
      </Source>
    </Image>
  </Images>
  <ImageLists />
</ImageManifest>

这是 pkgdef 文件:

[$RootKey$\ShellFileAssociations\.d]
"DefaultIconMoniker"="872b4702-eabf-444b-b6b3-96dc64531f74:0"
[$RootKey$\ShellFileAssociations\.di]
"DefaultIconMoniker"="872b4702-eabf-444b-b6b3-96dc64531f74:0"

在我的扩展的 vsixmanifest 中,pkgdef 文件被定义为具有以下属性的资产:

关于文件属性,图标图片文件设置为资源,而图片清单和pkgdef文件均设置为包含在VSIX中的内容。

如果我尝试在图像清单中使用 KnownMoniker,Visual Studio 会正确选择它并正确显示图标;如果我事先安装它,我什至可以从 FileIcons 扩展中引用图标名字。但是,一旦我尝试使用自己的清单和图标,就什么也没有显示出来。 我可能在这里做错了什么,但我似乎看不出到底是什么。

对于以后可能偶然遇到同样问题的任何人,我发现了我的问题所在。在我最初的测试中,我一定是做错了什么,导致 Visual Studio 在 .d 文件旁边的资源管理器中没有显示任何图标。 之后,由于某处的图标缓存,它可能会继续这样做,即使在纠正了我做错的任何事情之后也是如此。用另一个扩展名重命名文件,然后将其重命名回原来的名称,新图标开始出现。