Создание расширения SQL Server Management Studio с помощью проекта Visual Studio 2017 VSIX: Обход Initialiaze () для класса AsyncPackage - PullRequest
0 голосов
/ 20 февраля 2019

Я использую это руководство для создания расширения SSMS с помощью проекта VSIX Visual Studio 2017: https://www.codeproject.com/Articles/1243356/Create-Your-Own-SQL-Server-Management-Studio-SSMS

Однако я застрял на последнем шаге.Я сделал все, что он сказал, но проект не будет собран, потому что я получаю это сообщение об ошибке из метода Initialize ():

protected override void Initialize()

  1. 'HelloWorldCommandPackage.Initialize ()': невозможно переопределить унаследованный член' AsyncPackage.Initialize () ', потому что он запечатан.

Кажется, что при создании нового проекта VSIX в Visual Studio 2017 используется класс AsyncPackage для HelloWorldCommandPackage.csкоторые закрывают метод Initialize ().

Парень из этой статьи написал его для Visual Studio 2015, который использует класс Package при создании нового проекта VSIX.Я пытаюсь реализовать класс Package после создания основного класса следующим образом:

public sealed class HelloWorldCommandPackage: Package

Однако я получаю следующие ошибки:

  1. Ошибка CS0115 «HelloWorldCommandPackage.InitializeAsync (CancellationToken, IProgress)»: не найдено подходящего метода для переопределения HelloWorldSsmsExtension

  2. Ошибка VSSDK002 PackageRegistrationAttribute.AllowsBackgroundLoading должно быть установлено только в том случае, если для параметра packageRegistrationAttribute.из AsyncPackage.

  3. Ошибка CS1061 «HelloWorldCommandPackage» не содержит определения для «JoinableTaskFactory», и нет доступного метода расширения «JoinableTaskFactory», принимающего первый аргумент типа «HelloWorldCommandPackage» (Вы пропускаете директиву using или ссылку на сборку?)

  4. Ошибка CS1503 Аргумент 1: невозможно преобразовать из HelloWorldSsmsExtension.HelloWorldCommandPackage в Microsoft.VisualStudio.Shell.AsyncPackage '

Как сделатьЯ делаю эту работу в Visual Studio 2017?

1 Ответ

0 голосов
/ 06 марта 2019

Переопределение метода возможно только в производных классах.Потому что метод переопределяется в производном классе от базового класса.Метод должен быть не виртуальным или статическим методом для переопределения.И метод переопределения, и виртуальный метод должны иметь одинаковый модификатор уровня доступа.

...