Почему VS2019 отмечает мое расширение как устаревшее

Я не использую VSIX для интеграции (поддерживает старые VS и SSMS). Установщик помещает все dll в "программные файлы", а pkgdef и манифест в определенные папки. В настоящее время VS2019 показывает сообщение о том, что мое расширение использует «устаревший API».

Изображение с сообщением от docs.microsoft.com, но оно то же самое.

введите здесь описание изображения

Я сделал следующие шаги:

  • Я создал asyncPackage (теперь пустой).
  • Добавлен с помощью Microsoft.VisualStudio.Component.CoreEditor в vsixmanifest
  • Сгенерированы catalog.json и manifest.json с использованием кода из здесь

Мой пакет выглядит так (конструктор сейчас пуст)

    [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
    [InstalledProductRegistration("#110", "#112", "7.1.7", IconResourceID = 115)]
    [ProvideMenuResource("MyMenus.ctmenu", 1)]
    [ProvideAutoLoad(GuidList.ShellInitialized, PackageAutoLoadFlags.BackgroundLoad)]
    [ProvideAutoLoad(VSConstants.UICONTEXT.NoSolution_string, PackageAutoLoadFlags.BackgroundLoad)]
    [System.Runtime.InteropServices.Guid(GuidList.guidMyPkgString)]
    public sealed class MyPackage : AsyncPackage {

Но VisualStudio снова и снова показывает сообщение об устаревшем API. Что я упустил? Что проверяет VS при загрузке пакета?

Изменить: я создал AsyncPackage, добавил атрибуты, обновил файлы интеграции для VsixV3. Почему VS загружает расширение синхронно?


person vik_78    schedule 04.04.2019    source источник
comment
Какое сообщение - покажите пожалуйста !!   -  person ErikEJ    schedule 04.04.2019
comment
@ErikEJ добавил изображение с сообщением. У меня есть такой же.   -  person vik_78    schedule 04.04.2019
comment
Вы нажимали ссылку "Узнать больше"?   -  person ErikEJ    schedule 04.04.2019
comment
@ErikEJ приводит меня к статье Синхронно автоматически загружаемые расширения.   -  person vik_78    schedule 04.04.2019
comment
Есть ли у вас переопределение метода InitializeAsync?   -  person ErikEJ    schedule 04.04.2019
comment
Вы проверили, что сообщение появляется именно из-за вашего расширения?   -  person ErikEJ    schedule 04.04.2019
comment
@ErikEJ Тот же результат с InitializeAsync и без. Как и где я могу проверить, что вызывает такое поведение?   -  person vik_78    schedule 04.04.2019
comment
Посмотрите на docs.microsoft.com / en-us / visualstudio / extensibility / (диалоговое окно Performance Manager) !!   -  person ErikEJ    schedule 04.04.2019
comment
Вот в чем вопрос. Если я создал AsyncPackage и добавил атрибуты, почему VS загружается синхронно?   -  person vik_78    schedule 05.04.2019
comment
Вы перенесли свои методы на асинхронные методы?   -  person LoLance    schedule 08.04.2019
comment
@ LanceLi-MSFT В настоящее время я не использую никаких методов, пакет сейчас пуст.   -  person vik_78    schedule 08.04.2019
comment
Все еще борюсь с этим, так как я не могу воспроизвести вашу проблему на своей стороне. Подобно шагам, описанным выше, я не могу понять, что это за проект. Для какой функции работает ваше расширение? И, как вы упомянули выше, это пустой пакет, поэтому как работает ваше расширение, возможно, это причина проблемы.   -  person LoLance    schedule 12.04.2019
comment
@ LanceLi-MSFT Я обнаружил проблему. Как я уже упоминал выше, мы не используем VSIX. Так что pkgdef справляется с установкой. Я добавил "AllowsBackgroundLoad"=dword:00000001 в pkgdef.   -  person vik_78    schedule 12.04.2019
comment
Очень рад узнать, что вы ее решили. И спасибо, что поделились своим решением здесь.   -  person LoLance    schedule 12.04.2019


Ответы (1)


Для кого это может помочь решить ту же проблему. Как я уже упоминал выше, мы не используем VSIX. И все файлы копируются установщиком. Проблема заключалась в том, что это было упущено:

[$RootKey$\Packages\{YOUR PACKAGE GUID}]
@="YOUR PACKAGE NAME"
"AllowsBackgroundLoad"=dword:00000001

Я нашел его при проверке всех пакетов в частном реестре privateregistry.bin

Также не забывайте о UI Context, если вы его используете:

[$RootKey$\AutoLoadPackages\$UICONTEXT_GUID}]
"$YOUR_PACKAGE_GUID”= dword:00000002

Благодаря MS git

person vik_78    schedule 12.04.2019