vstemplate 文件引用向导类 Blazor.IWizardImplementationRoot,当将扩展迁移到 VS2022 时,程序集中不存在该向导类

问题描述

我正在维护 Blazor 平台的 Visual Studio 扩展,该扩展用于使用我的自定义组件创建新的 Blazor 应用程序。目前我在清单文件中使用以下安装目标在 VS2019 中安装 VSIX

<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[16.3.29209,17.0)"/>

我也想为我的自定义 Blazor 项目模板扩展提供 VS2022 支持。因此,我在清单文件中尝试了以下安装目标。

<Installation>
        <InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[16.3.29209,18.0)">
            <ProductArchitecture>amd64</ProductArchitecture>
        </InstallationTarget>
    </Installation>

更改后VSIX已经在VS2019和VS2022中成功安装。但是在尝试创建我的自定义 blazor 项目模板时,由 IWizard 界面开发的自定义向导未在 VS2022 中加载。因此,我按照以下步骤将我的扩展迁移到 VS2022(注意:我认为迁移后我的 VSIX 将在 VS2019 和 VS2022 上运行)

  1. 在我的 VSIX 和自定义向导应用程序中将框架更改为 4.7.2
  2. 我已经从我的 VSIX 和向导应用程序中删除了所有框架程序集,并安装了以下两个 NuGet 包作为包参考
<packagereference Include="Microsoft.VisualStudio.SDK">
      <Version>17.0.0-previews-1-31410-258</Version>
</packagereference>
<packagereference Include="Microsoft.VisualStudio.TemplateWizardInterface">
      <Version>17.0.0-previews-1-31314-256</Version>
</packagereference>

现在我的 VSIX 和向导应用程序已经在 VS2022 中成功编译和调试,我的扩展在 VS2022 中按预期工作。但是在VS2019中,我遇到了“vstemplate文件引用了程序集中不存在的向导类Blazor.IWizardImplementationRoot”之类的问题

使用单个 VSIX 而不是单独的 VSIX 运行我的扩展 VS2019 和 VS2022 是否需要任何更改?

请提出解决此问题的解决方案,并提供在单个 VSIX 中提供 VS2022 和 VS2019 支持的步骤,而不是维护单独的 VSIX 项目和单独的 VSIX 文件。因为我们要在 Visual Studio 市场中发布我们的 VSIX 文件。如果我们维护单独的 VSIX 文件,我们将无法发布 VS2022 的 VSIX 文件

谢谢,

Ganesan R.

解决方法

您是否遵循了 migrating extensions to VS2022 的文档?

例如,我看到您尝试组合安装目标,但文档显示要单独执行它们,因为 x86 而 >=17.0 要求它为 {{1 }}:

amd64

但是,根据您的扩​​展包含的其他代码类型,您可能需要拆分为单独的 VSIX。这是由于 VS 本身的参考程序集之间的重大更改。