交互式 window 支持 vsix 模板中的多个运行时 .NET Core

Interactive window support for multiple runtimes .NET Core in vsix template

在为 VSIX 创建模板时,我们可以允许用户选择 .Net 框架版本 这是如何完成的:

<TargetFrameworkVersion>v$targetframeworkversion$</TargetFrameworkVersion>

现在,随着新版本 Visual Studio (16.8) 的发布,这也允许用户 select .NET Core 版本。 但是这段代码似乎在 .NET Core 模板项目中不起作用,并且显示不同的数字而不是 netcoreapp3.1 或 net50-windows 值。 .net 核心也使用 <TargetFramework> 而不是 <TargetFrameworkVersion> 那么正确的参数是什么? 我测试了这些:

1.result = 4.5

<TargetFrameworkVersion>$targetframeworkversion$</TargetFrameworkVersion>

2.result = $targetframework$

<TargetFramework>$targetframework$</TargetFramework>

3.result = 4.5

<TargetFramework>$targetframeworkversion$</TargetFramework>

我认为您目前无法为 Net Core 创建这样的 vsix 项目模板

我认为您已经创建了项目模板项目来实现您的要求。

你应该注意到这个项目模板使用旧的 sdk 样式格式而不是新的 sdk 格式(Net Core)。还有,它传入和传出的总是Net Framework.

的框架

所以无论你如何在这个模板的基础上改变它的proj形式,它永远是net framework。可以看到这个界面,是我自己创建的自定义模板,我改成使用

<Project Sdk="Microsoft.NET.Sdk">
....

<TargetFramework>$targetframeworkversion$</TargetFramework>

.....

</Project>

而且我还卸载了 项目模板 项目--> 编辑 xxx.csproj 文件,更改为使用这些:

 <Project Sdk="Microsoft.NET.Sdk">
    ....
    
    <TargetFramework>netcoreapp3.1</TargetFramework>
    
    .....
    
  </Project>

构建项目模板并将其放入C:\Users\xxx\Documents\Visual Studio 2019\Templates\ProjectTemplates

重启VS,然后使用那个模板,你可以看到这个:

始终以 net frameowrk 为目标。并且证明修改后的框架是由项目模板项目本身的内部参数控制的,我们不能改变这个内部参数。

详细$targetframeworkversion$是项目模板本身的参数,由于项目模板是微软发布的net framework,所以参数总是 net framework 和其他不可控制的行为也会导致模板项目的损坏。所以我们不能用那个得到Net Core

建议

作为建议,你应该在DC Forum or github上与微软的团队联系,发布一个新的项目模板项目,使用新的sdk格式(Net Core格式)。