[Просто] Создание пользовательских шаблонов в C#


“Будьте друг ко другу добры и сострадательны, прощая друг друга, как и Бог простил вас во Христе”.
Ефесянам 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

Оцените статью
Procodings.ru
Добавить комментарий