Получение пользовательского ContentType для регистрации с автозаполнением в расширении VSIX - PullRequest
0 голосов
/ 02 февраля 2019

Я написал расширение, обеспечивающее автозаполнение IntelliSense для изолированной оболочки VS.У меня проблема с тем, чтобы это автозаполнение применялось только к файлам определенного типа.Для этого я следовал указаниям здесь .

Соответствующий файл класса:

using Microsoft.VisualStudio.Utilities;
using System.ComponentModel.Composition;

namespace VSIXProject1
{
    internal static class FileAndContentTypeDefinitions
    {

        [Export]
        [Name("assembly")]
        [BaseDefinition("text")]
        internal static ContentTypeDefinition hidingContentTypeDefinition;

        [Export]
        [FileExtension(".asm")]
        [ContentType("assembly")]
        internal static FileExtensionToContentTypeDefinition hiddenAVRASMFileExtensionDefinition;
    }
}

Несмотря на это, когда я помещал экспорт [ContentType("assembly")] в ICompletionSourceProviderи в IVsTextViewCreationListener, который используется для обработки интеграции IntelliSense, автозаполнение вообще не отображается.Однако, когда я использую [ContentType("text")] или [ContentType("plaintext")], автозаполнение будет отображаться либо для всех файлов, либо только для файлов .txt, соответственно.

Это первый плагин VSIX, который я пытался сделать, поэтому, возможно,Я что-то пропустил.В настоящее время я в растерянности, что попробовать дальше.Много гуглирования не дало много информации, и ресурсы кода, которые я обнаружил, похоже, реализуют это поведение так же, как я пытаюсь.

1 Ответ

0 голосов
/ 03 февраля 2019

Итак, после нескольких неудачных попыток и удачи я понял, в чём моя проблема.Конкретная изолированная оболочка (Atmel Studio), для которой я пытался написать расширение, уже имела ContentType для файлов сборки.Я предполагаю, что когда я добавил свой собственный тип контента, он был перезаписан самой оболочкой.

Чтобы исправить проблему, я использовал имя ContentType, которое использует оболочка, которая оказалась «ассемблером».Это была удачная догадка, основанная на языках, которые отображаются в меню «Инструменты»> «Параметры»> «Текстовый редактор».Надеюсь, это поможет тому, кто столкнется с той же проблемой в будущем.

...