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 文件被定义为具有以下属性的资产:
- 类型:
Microsoft.VisualStudio.VsPackage
- 来源:
File on filesystem
- 路径:
icons.pkgdef
(这显然是我命名 pkgdef 文件的方式)
关于文件属性,图标图片文件设置为资源,而图片清单和pkgdef文件均设置为包含在VSIX中的内容。
如果我尝试在图像清单中使用 KnownMoniker,Visual Studio 会正确选择它并正确显示图标;如果我事先安装它,我什至可以从 FileIcons 扩展中引用图标名字。但是,一旦我尝试使用自己的清单和图标,就什么也没有显示出来。
我可能在这里做错了什么,但我似乎看不出到底是什么。
对于以后可能偶然遇到同样问题的任何人,我发现了我的问题所在。在我最初的测试中,我一定是做错了什么,导致 Visual Studio 在 .d
文件旁边的资源管理器中没有显示任何图标。
之后,由于某处的图标缓存,它可能会继续这样做,即使在纠正了我做错的任何事情之后也是如此。用另一个扩展名重命名文件,然后将其重命名回原来的名称,新图标开始出现。
我正在尝试将自定义图标添加到 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 扩展中引用图标名字。但是,一旦我尝试使用自己的清单和图标,就什么也没有显示出来。 我可能在这里做错了什么,但我似乎看不出到底是什么。
对于以后可能偶然遇到同样问题的任何人,我发现了我的问题所在。在我最初的测试中,我一定是做错了什么,导致 Visual Studio 在 .d
文件旁边的资源管理器中没有显示任何图标。
之后,由于某处的图标缓存,它可能会继续这样做,即使在纠正了我做错的任何事情之后也是如此。用另一个扩展名重命名文件,然后将其重命名回原来的名称,新图标开始出现。