“Будьте друг ко другу добры и сострадательны, прощая друг друга, как и Бог простил вас во Христе”.
Ефесянам 4.32
Вы, вероятно, видели или использовали команду dotnet new
для создания проектов, используя новый .NET framework, поэтому я собираюсь показать вам, как создать свой собственный шаблон!
Необходимые условия (для данного учебника):
- dotnet CLI
- Код VS
Я создам шаблон проекта Web API, но мы можем создать шаблоны файлов или даже полные структуры с Dockerfile
, .editorconfig
, .sln
, структуры папок и так далее, все зависит от вашей потребности (или креативности). Но для данного урока мы будем делать это самым простым и полезным на данный момент способом, поэтому приступим.
Открыв терминал VSCode, давайте создадим проект Web API, настроим его и удалим все ненужное.
> dotnet new webapi --no-https -n MyProject -o src
> ri src/WeatherForecast.cs
> ren src/Controllers/WeatherForecastController.cs MyController.cs
Мы внесем некоторые изменения в файл MyController.cs
(если вы новичок, не копируйте код, а напишите его построчно).
using Microsoft.AspNetCore.Mvc;
// MyProject será substituido pelo nome do projeto ao criar o template
namespace MyProject.Controllers;
[ApiController]
[Route("[controller]")]
// WeatherForecast foi renomeado para My
public class MyController : ControllerBase
{
private readonly ILogger<MyController> _logger;
public MyController(ILogger<MyController> logger)
{
_logger = logger;
}
[HttpGet()]
public string Get()
{
_logger.LogInformation("Hello World");
return "Olá Mundo";
}
[HttpPost()]
public void Post([FromBody] object body)
{
_logger.LogInformation($"received {body}");
}
}
Теперь давайте запустим его, чтобы проверить, все ли правильно:
> dotnet run --project src
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5172
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:reposcriando-templatesrc
Я использую расширение под названием REST Client для выполнения запросов с помощью VSCode для более быстрого тестирования, но вы можете использовать Postman, если хотите, или сам браузер для метода GET. Чтобы никого не запутать, я покажу вам результат работы моего терминала при выполнении запросов.
info: MyProject.Controllers.MyController[0]
Hello World
info: MyProject.Controllers.MyController[0]
received { "confia": "no Pai" }
Теперь, имея наш пользовательский Web API, давайте настроим наш шаблон:
> mkdir ./src/.template.config
> '' > ./src/.template.config/template.json
Содержимое файла template.json
:
{
"$schema": "http://json.schemastore.org/template",
"author": "@confianodev",
"identity": "My Web Api",
"name": "My Web Api",
"shortName": "myapi",
"preferNameDirectory": false,
"sourceName": "MyProject",
"classifications": ["Web API", "API"],
"tags": {
"language": "C#",
"type": "project"
}
}
Я дам краткое объяснение некоторых из этих областей, помня, что мы можем адаптировать эту информацию:
автор – Имя того, кому принадлежит интеллектуальная собственность на этот шаблон (вы, компания, организация).
shortName – Имя, которое будет использоваться в команде, пример: dotnet new myapi
.
preferNameDirectory – Если true
, то проект будет создан в папке с именем informed(dotnet new myapi -n ThisName
), если false
, то папка не создается.
sourceName – Очень важно, поскольку это ключевое слово, которое будет заменять файлы, пространство имен, текст и т.д. при создании нового проекта по вашему шаблону (dotnet new myapi -n Keyword
).
tags – Используются для информирования о том, какой тип шаблона и какие языки поддерживаются (мы можем создавать и на F#).
Для получения дополнительной информации вы можете перейти по этой ссылке.
Наконец, давайте установим наш шаблон, создадим проект и протестируем его:
> dotnet new -i .
> dotnet new myapi -n Oloko -o sample
> dotnet run --project sample/
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5172
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:reposcriando-templatesample
И наш шаблон готов. Помните, что идея шаблона заключается в том, чтобы облегчить создание новых проектов и новых файлов, поэтому создавайте его так, как это наиболее удобно для вашей повседневной работы.
Если вы хотите удалить его, просто выполните команду:
> dotnet new --uninstall .
Конечно, это самый простой способ создания шаблона, в следующем посте я покажу, как создать полное решение, с двумя проектами и одним решением, с Dockerfile, стандартизацией кода и так далее, используя действия github для публикации в виде пакета Nuget.
Я очень благодарен за то, что поделился с вами этими знаниями, если у вас есть вопросы, оставляйте их в комментариях.
Зайдите на мой канал YouTube, нажав здесь
А если вы хотите перейти к более продвинутому посту, нажмите здесь
Обнимаю и до следующей встречи!
Источники:
Донован Браун: Пользовательские шаблоны для dotnet new
Как создавать собственные шаблоны
Templating Wiki