通过Visual Studio 2017 VSIX项目构建SQL Server Management Studio扩展:绕过AsyncPackage类的Initialiaze()

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

我正在使用本指南通过visual studio 2017 VSIX项目构建SSMS扩展:https://www.codeproject.com/Articles/1243356/Create-Your-Own-SQL-Server-Management-Studio-SSMS

但是,我坚持到最后一步。我做了所有的事情,但项目不会构建,因为我从Initialize()方法得到这个错误消息:

protected override void Initialize()

  1. 'HelloWorldCommandPackage.Initialize()':无法覆盖继承的成员'AsyncPackage.Initialize()',因为它是密封的。

似乎在Visual Studio 2017中创建一个新的VSIX项目使用'AsyncPackage'类来封装Initialize()方法的HelloWorldCommandPackage.cs。

文章中的人为Visual Studio 2015编写了它,在创建新的VSIX项目时使用了'Package'类。我在创建主类后尝试实现'Package'类,如下所示:

public sealed class HelloWorldCommandPackage: Package

但是,我收到这些错误:

  1. 错误CS0115'HelloWorldCommandPackage.InitializeAsync(CancellationToken,IProgress)':找不到合适的方法来覆盖HelloWorldSsmsExtension
  2. 错误VSSDK002当且仅当包派生自AsyncPackage时,PackageRegistrationAttribute.AllowsBackgroundLoading应设置为true。
  3. 错误CS1061'HelloWorldCommandPackage'不包含'JoinableTaskFactory'的定义,并且没有可访问的扩展方法'JoinableTaskFactory'接受类型为'HelloWorldCommandPackage'的第一个参数'(您是否缺少using指令或程序集引用?)
  4. 错误CS1503参数1:无法从'HelloWorldSsmsExtension.HelloWorldCommandPackage'转换为'Microsoft.VisualStudio.Shell.AsyncPackage'

如何在Visual Studio 2017中完成此工作?

c# visual-studio visual-studio-2017 ssms
1个回答
1
投票

方法覆盖只能在派生类中进行。因为派生类中的方法是从基类重写的。方法必须是非虚拟或静态方法才能覆盖。覆盖方法和虚方法都必须具有相同的访问级别修饰符。

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