Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
С помощью .NET можно создавать и развертывать шаблоны, которые создают проекты, файлы и ресурсы. Это руководство является частью серии, в которой описано, как создавать, устанавливать и удалять шаблоны для использования с командой dotnet new .
Полный шаблон можно просмотреть в репозитории GitHub примеров .NET.
Подсказка
Шаблоны элементов не отображаются в диалоговом окне добавления>нового элемента Visual Studio.
В этой части серии вы узнаете, как:
- Создайте класс для шаблона элемента.
- Создайте папку и файл конфигурации шаблона.
- Установите шаблон с указанного пути к файлу.
- Проверьте шаблон элемента.
- Удалите шаблон элемента.
Предпосылки
.NET 9 или более поздней версии.
В справочной статье описываются основы шаблонов и их объединения. Некоторые из этих сведений вновь приведены здесь.
Откройте терминал и перейдите в папку, в которой будут храниться и тестировать шаблоны.
Создание необходимых папок
В этой серии используется рабочая папка, в которой содержится источник шаблона, а для тестирования шаблонов используется папка тестирования. Рабочая папка и папка тестирования должны находиться в той же родительской папке.
Сначала создайте родительскую папку, имя не имеет значения. Затем создайте две вложенные папки с именем working и test. В рабочей папке создайте вложенную папку с именем содержимого.
Структура папок должна выглядеть следующим образом.
parent_folder
├───test
└───working
└───content
Создание шаблона элемента
Шаблон элемента — это определенный тип шаблона, который содержит один или несколько файлов. Эти типы шаблонов полезны, если у вас уже есть проект, и вы хотите создать другой файл, например файл конфигурации или файл кода. В этом примере создается класс, который добавляет метод расширения в тип строки.
В терминале перейдите в папку working\content и создайте новую подпапку под именем extensions.
working
└───content
└───extensions
Перейдите в папку расширений и создайте файл с именем StringExtensions.cs. Откройте файл в текстовом редакторе. Этот класс предоставляет метод расширения с именем Reverse , который изменяет содержимое строки. Вставьте следующий код и сохраните файл:
namespace System;
public static class StringExtensions
{
public static string Reverse(this string value)
{
char[] tempArray = value.ToCharArray();
Array.Reverse(tempArray);
return new string(tempArray);
}
}
Теперь, когда содержимое шаблона завершено, создайте конфигурацию шаблона.
Создание конфигурации шаблона
В этой части руководства папка шаблона находится в рабочей\content\extensions.
Шаблоны распознаются .NET, так как они имеют специальную папку и файл конфигурации, существующий в корне папки шаблона.
Сначала создайте новую вложенную папку с именем .template.config, и перейдите в неё. Затем создайте новый файл с именем template.json. Структура папок должна выглядеть следующим образом:
working
└───content
└───extensions
└───.template.config
template.json
Откройте template.json с любимым текстовым редактором и вставьте следующий код JSON и сохраните его.
{
"$schema": "http://json.schemastore.org/template",
"author": "Me",
"classifications": [ "Common", "Code" ],
"identity": "ExampleTemplate.StringExtensions",
"name": "Example templates: string extensions",
"shortName": "stringext",
"tags": {
"language": "C#",
"type": "item"
},
"symbols": {
"ClassName":{
"type": "parameter",
"description": "The name of the code file and class.",
"datatype": "text",
"replaces": "StringExtensions",
"fileRename": "StringExtensions",
"defaultValue": "StringExtensions"
}
}
}
Этот файл конфигурации содержит все параметры шаблона. Вы можете просмотреть основные параметры, такие как name и shortName, но также есть параметр tags/type, который задан item. Это классифицирует ваш шаблон как шаблон "элемент". Нет ограничений на тип создаваемого шаблона. Значения item и project являются распространенными именами, которые рекомендует .NET, чтобы пользователи могли легко отбирать нужный тип шаблона.
Элемент classifications представляет столбец тегов, который отображается при запуске dotnet new и получении списка шаблонов. Пользователи также могут выполнять поиск на основе тегов классификации. Не путайте tags свойство в файле template.json со списком classifications тегов. Они два разных понятия, которые, к сожалению, называются одинаковыми. Полная схема файла template.json найдена в хранилище схем JSON и описана в справочнике по template.json. Дополнительные сведения о файлеtemplate.json см. вики-сайте dotnet.
Часть symbols этого объекта JSON используется для определения параметров, которые можно использовать в шаблоне. В этом случае определен ClassNameодин параметр. Определенный параметр содержит следующие параметры:
-
type— Это обязательный параметр и должен иметь значениеparameter. -
description— Описание параметра, который выводится в справке шаблона. -
datatype— Тип данных значения параметра при использовании параметра. -
replaces— задает текстовое значение, которое должно быть заменено во всех файлах шаблонов значением параметра. -
fileRename— Аналогичноreplaces, это указывает текстовое значение, которое заменяется в именах всех файлов шаблонов значением параметра. -
defaultValue— значение по умолчанию этого параметра, если параметр не указан пользователем.
При использовании шаблона пользователь может указать значение параметра ClassName , и это значение заменяет все вхождения StringExtensions. Если значение не указано, defaultValue используется. Для этого шаблона существует два вхождения StringExtensions: файл StringExtensions.cs и класс StringExtensions.
defaultValue Так как параметр имеет StringExtensionsзначение, имя файла и имя класса остаются неизменными, если параметр не указан при использовании шаблона. Если указано значение, например dotnet new stringext -ClassName MyExts, файл переименован MyExts.cs , а класс переименован в MyExts.
Чтобы узнать, какие параметры доступны для шаблона, используйте -? параметр с именем шаблона:
dotnet new stringext -?
Это создает следующие выходные данные:
Example templates: string extensions (C#)
Author: Me
Usage:
dotnet new stringext [options] [template options]
Options:
-n, --name <name> The name for the output being created. If no name is specified, the name of the output directory is used.
-o, --output <output> Location to place the generated output.
--dry-run Displays a summary of what would happen if the given command line were run if it would result in a template creation.
--force Forces content to be generated even if it would change existing files.
--no-update-check Disables checking for the template package updates when instantiating a template.
--project <project> The project that should be used for context evaluation.
-lang, --language <C#> Specifies the template language to instantiate.
--type <item> Specifies the template type to instantiate.
Template options:
-C, --ClassName <ClassName> The name of the code file and class.
Type: text
Default: StringExtensions
Теперь, когда у вас есть действительный файл.template.config/template.json , шаблон готов к установке. В терминале перейдите в папку расширений и выполните следующую команду, чтобы установить шаблон, расположенный в текущей папке:
-
В Windows:
dotnet new install .\ -
В Linux или macOS:
dotnet new install ./
Эта команда выводит список установленных шаблонов, которые должны содержать ваши.
The following template packages will be installed:
<root path>\working\content\extensions
Success: <root path>\working\content\extensions installed the following templates:
Templates Short Name Language Tags
-------------------------------------------- ------------------- ------------ ----------------------
Example templates: string extensions stringext [C#] Common/Code
Тестирование шаблона элемента
Теперь, когда у вас установлен шаблон элемента, проверьте его.
Перейдите в тестовую папку.
Создайте новое консольное приложение с помощью
dotnet new console, которое формирует рабочий проект, легко тестируемый командойdotnet run.dotnet new consoleВы получите выходные данные, аналогичные приведенным ниже.
The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on C:\test\test.csproj... Restore completed in 54.82 ms for C:\test\test.csproj. Restore succeeded.Запустите проект с помощью следующей команды.
dotnet runВы получите следующие выходные данные.
Hello, World!Запустите
dotnet new stringext, чтобы создать файл StringExtensions.cs из шаблона.dotnet new stringextВы получите следующие выходные данные.
The template "Example templates: string extensions" was created successfully.Измените код в Program.cs , чтобы перевернуть
"Hello, World!"строку с помощью метода расширения, предоставленного шаблоном.Console.WriteLine("Hello, World!".Reverse());Запустите программу снова и увидьте, что результат обратный.
dotnet runВы получите следующие выходные данные.
!dlroW ,olleH
Поздравляю! Вы создали и развернули шаблон элемента с помощью .NET. При подготовке к следующей части этой серии учебников удалите созданный шаблон. Не забудьте удалить все файлы и папки в тестовой папке. Это возвращает систему в чистое состояние, готовое к следующей части этой серии руководств.
Удалите шаблон
В терминале перейдите в папку расширений и выполните следующую команду, чтобы удалить шаблоны, расположенные в текущей папке:
-
В Windows:
dotnet new uninstall .\ -
В Linux или macOS:
dotnet new uninstall ./
Эта команда выводит список шаблонов, которые были удалены, которые должны включать ваши.
Success: <root path>\working\content\extensions was uninstalled.
В любое время вы можете использовать dotnet new uninstall для просмотра списка установленных пакетов шаблонов, включая команду удаления для каждого пакета шаблонов.
Дальнейшие шаги
В этом руководстве вы создали шаблон элемента. Чтобы узнать, как создать шаблон проекта, перейдите к этой серии учебников.