问题描述
在为VSIX创建模板时,我们可以允许用户选择.Net框架版本 就是这样的:
<TargetFrameworkVersion>v$targetframeworkversion$</TargetFrameworkVersion>
现在,随着新版本Visual Studio(16.8)的发布,用户还可以选择.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框架。您可以看到此界面,它是我创建的自定义模板,我将其更改为使用
<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$
是项目模板本身的参数,并且由于项目模板是由Microsoft使用net framework
发布的,因此该参数始终为{{1 }}和其他无法控制的行为也可能导致模板项目的损坏。因此,我们无法获得net framework
。
建议
作为建议,您应该通过DC Forum或github与Microsoft团队联系,以使用新的sdk格式(Net Core格式)发布新的项目模板项目。