通过dotnet cli中的自定义模板创建类时如何检测命名空间
Posted
技术标签:
【中文标题】通过dotnet cli中的自定义模板创建类时如何检测命名空间【英文标题】:how to detect namespace when creating a class through a custom template in dotnet cli 【发布时间】:2022-01-08 10:47:09 【问题描述】:我正在制作一个自定义类 dotnet 新模板,下面是我的 template.json。这可行,但我不知道如何检测当前命名空间并替换它。
模板.json:
"$schema": "http://json.schemastore.org/template",
"author": "name",
"classifications": [ "core", "console", "class" ],
"tags":
"language": "C#",
"type": "item"
,
"identity": "Template.ClassTemplate",
"name": "Editable Class Template",
"shortName": "class",
"sourceName": "Class1"
C#模板代码文件名为Class1.cs:
using System;
namespace newClass
public class Class1
创建新类的命令行:
dotnet new class -n class_name
生成的 c# 文件如下并命名为 class_name.cs:
using System;
namespace newClass
public class class_name
我想知道如何检测命名空间,以便我可以选择更改它或自动检测并设置命名空间。谢谢!
【问题讨论】:
【参考方案1】:您可以在命令行中使用自己的参数指定。
我从示例库https://github.com/dotnet/dotnet-template-samples/tree/master/02-add-parameters得到这个
"$schema": "http://json.schemastore.org/template",
"author": "name",
"classifications": [ "core", "console", "class" ],
"tags":
"language": "C#",
"type": "item"
,
"identity": "Template.ClassTemplate",
"name": "Editable Class Template",
"shortName": "class",
"sourceName": "Class1",
"symbols":
"namespace":
"type": "parameter",
"defaultValue": "MyNamespace",
"replaces": "MY_NAMESPACE"
它将替换您源中的值
using System;
namespace MY_NAMESPACE
public class Class1
用法:
dotnet new class -n class_name --namespace Foo
【讨论】:
这也是我的工作,它正在工作,但我想让它自动检测,就像在 Visual Studio 模板中有一个名为$rootnamespace$
的变量一样,它为当前项目以上是关于通过dotnet cli中的自定义模板创建类时如何检测命名空间的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Entity Framework Core cli 工具中使用来自 dotnet 6 最小 API 的配置
如何使用 dotnet cli 命令以 VB.NET 语言创建 ASP.NET Core 项目?
Web api dotnet core 中的 Api 版本控制错误的自定义错误响应