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

时间:2018-06-17 12:07:27

标签: visual-studio icons visual-studio-extensions solution-explorer

我正在尝试在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文件被定义为具有以下属性的资产:

  • 输入:Microsoft.VisualStudio.VsPackage
  • 来源:File on filesystem
  • 路径:icons.pkgdef(显然,我是如何命名我的pkgdef文件的)

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

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

1 个答案:

答案 0 :(得分:0)

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