无需CLI,在Windows程序中获取已安装C#模板列表的方法
在自研Windows程序中实现.NET模板列表功能的方案
两种可行方案对比
1. 调用dotnet-cli命令(推荐)
直接在程序里执行dotnet new -list命令,捕获输出结果再解析即可。这种方式和dotnet-cli的行为完全一致,能自动识别所有官方、第三方安装的模板(包括用dotnet new install添加的),无需自行编写模板加载、筛选逻辑。
- 优势:与CLI同步更新,兼容性强,实现简单,维护成本极低。
- 实现思路:用C#的Process类启动dotnet进程,传入
new -list参数,重定向标准输出,将输出内容按行拆分后提取模板名称、短名称、支持语言等信息。
2. 直接解析模板文件夹
.NET模板主要存储在两个路径:
- 全局安装模板:
%USERPROFILE%\.templateengine\packages - SDK内置模板:
C:\Program Files\dotnet\sdk\[具体版本号]\templates
每个模板包为nupkg格式,需先解压,再读取其中的template.json或template.config/template.json文件,解析模板元数据。 - 劣势:需自行处理nupkg解压、多版本SDK模板识别、模板筛选逻辑,还要跟进模板格式更新调整代码,维护成本高。
- 适用场景:仅当需要对模板做深度自定义处理(如修改元数据后展示),且能接受后续维护工作时,才考虑该方式。
总结
优先选择调用dotnet new -list命令的方案,无特殊需求的话,不建议直接解析模板文件夹。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

