我正在使用本指南通过Visual Studio 2017 VSIX项目构建SSMS扩展:https://www.codeproject.com/Articles/1243356/Create-Your-Own-SQL-Server-Management-Studio-SSMS
但是,我被困在最后一步。我按照它说的做了所有,但项目无法构建,因为我从Initialize()方法得到了以下错误消息:
protected override void Initialize()
似乎在Visual Studio 2017中创建新的VSIX项目时,将HelloWorldCommandPackage.cs的'AsyncPackage'类用于密封Initialize()方法。
本文中的那个人是为Visual Studio 2015编写的,它在创建新的VSIX项目时使用了'Package'类。在创建像这样的主类后,我尝试实现“ Package”类:
public sealed class HelloWorldCommandPackage: Package
但是,出现以下错误:
错误CS0115'HelloWorldCommandPackage.InitializeAsync(CancellationToken,IProgress)':找不到合适的方法来覆盖HelloWorldSsmsExtension
错误VSSDK002当且仅当软件包派生自AsyncPackage时,才应将PackageRegistrationAttribute.AllowsBackgroundLoading设置为true。
错误CS1061'HelloWorldCommandPackage'不包含'JoinableTaskFactory'的定义,并且找不到可访问的扩展方法'JoinableTaskFactory'接受类型为'HelloWorldCommandPackage'的第一个参数(您是否缺少using指令或程序集参考?)
错误CS1503参数1:无法从“ HelloWorldSsmsExtension.HelloWorldCommandPackage”转换为“ Microsoft.VisualStudio.Shell.AsyncPackage”
如何在Visual Studio 2017中完成这项工作?
答案 0 :(得分:1)
仅在派生类中才可以覆盖方法。因为在基类的派生类中重写了方法。方法必须是非虚拟或静态方法才能覆盖。覆盖方法和虚拟方法必须具有相同的访问级别修饰符。