VS 2022 扩展图像未在自定义 IntelliSense 中显示

问题描述 投票:0回答:1

我正在开发语言扩展(针对 VS 2022)并提供用于代码完成的自定义数据。所以我有 1 个 VS 扩展包(UI 等),其中包括另一个 VSIX 项目作为 MEF 组件(包含与完成 api 交互的代码)。 Moniker imagemanifest 是扩展包的一部分。在处理补全时,我可以提供带有 Moniker GUID 和 ID(如 ImageId)的 ImageElement。但我的图像不显示,我做错了什么吗?

[IntelliSense 缺失图像]

[项目结构]

PackageImageIds.cs 包含 Moniker Guid 和 Image Id。

这是我当前的问题解决方案:

VSCT 中的符号声明(我为 MyMonikerGuid 和 MyImageId 切换了真实姓名和 id):

<GuidSymbol name="Moniker" value="MyMonikerGuid">
    <IDSymbol name="Image" value="MyImageId" />
</GuidSymbol>

图像清单:

<?xml version="1.0" encoding="utf-8"?>

<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="/MyAssembly;Component/Resources" />
        <Guid Name="Moniker" Value="MyMonikerGuid" />
        <ID Name="Image" Value="MyImageId" />
    </Symbols>
    <Images>
        <Image Guid="$(Moniker)" ID="$(Image)">
            <Source Uri="$(Resources)/image16.png">
                <Size Value="16" />
            </Source>
            <Source Uri="$(Resources)/image32.png">
                <Size Value="32" />
            </Source>
        </Image>
    </Images>
    <ImageLists />
</ImageManifest>

它的BuildAction是“内容”并且“包含在VSIX中”是true(我也检查了,imagemanifest部署正确)

ImageElement(再次切换一些值用于展示,它们在我的代码中是正确的):

private static readonly ImageElement Image = new ImageElement(new ImageId(PackageImageIds.MyMonikerGuid, PackageImageIds.MyImageId), "Automation name");

返回我的 CompletionItems 时提供此 ImageElement

new CompletionItem(e.DisplayText, this, Image, ...)

根据我发现的一些来源,这应该工作得很好,但所有这些来源都与 Visual Studio 的早期版本相关,所以也许 VS2022 有不同的方法?我还注意到 Visualstudio sdk 中有一些重大变化,所以问题可能就在那里,idk。

无论如何,谢谢你的帮助:)

c# visual-studio-2022 vsix
1个回答
0
投票

在最近的 Visual Studio 版本中,通过 imagemanifest 进行 VS 扩展中的自定义图像已损坏。请在此处查看并投票:https://developercommunity.visualstudio.com/t/VSSDKCPSExtensibility:-Image-Loading-i/10525678

© www.soinside.com 2019 - 2024. All rights reserved.