#c# #.net #visual-studio #dotnet-cli #dotnet-new
#c# #.net #visual-studio #dotnet-cli #dotnet-новый
Вопрос:
Я создаю новый шаблон пользовательского класса dotnet, а ниже приведен мой template.json. Это работает, но я не могу понять, как определить текущее пространство имен и заменить его.
template.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:
Вы можете указать в командной строке свой собственный параметр.
Я получил это из репозитория samples 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
Комментарии:
1. Так что это тоже была моя работа, и она работает, но я бы хотел, чтобы она обнаруживалась автоматически, например, как в шаблонах Visual Studio вызывается переменная
$rootnamespace$
, которая выбирает пространство имен для текущего проекта