为什么 VS2019 将我的扩展标记为已弃用

Why VS2019 marks my extension as deprecated

我不使用 VSIX 进行集成(支持旧的 VS 和 SSMS)。安装程序将所有 dll 放入 "program files" 并将 pkgdef 和清单放入特定文件夹。目前 VS2019 显示我的扩展程序使用 "deprecated API".

的消息

图像和来自 docs.microsoft.com 的消息,但它是一样的。

我完成了以下步骤:

我的包看起来是这样的(构造函数现在是空的)

    [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同步加载扩展?

这可以帮助谁解决同样的问题。 正如我上面提到的,我们不使用 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