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

时间:2019-02-20 04:37:35

标签: c# visual-studio visual-studio-2017 ssms

我正在使用本指南通过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项目时,将HelloWorldCommandPackage.cs的'AsyncPackage'类用于密封Initialize()方法。

本文中的那个人是为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中完成这项工作?

1 个答案:

答案 0 :(得分:1)

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