company_banner

ASP.NET Core: Разработка приложений ASP.NET Core с помощью dotnet watch

https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch
  • Перевод
  • Tutorial
В этом руководстве мы воспользуемся существующим приложением WebApi (оно вычисляет сумму и произведение двух чисел), чтобы продемонстрировать варианты использования dotnet watch. Образец приложения специально содержит ошибку, которую мы исправим во время изучения.



Второй цикл статей по ASP.NET Core


1. Создание серверных служб для мобильных приложений.
2. Разработка приложений ASP.NET Core с помощью dotnet watch.
3. Создание справочных страниц веб-API ASP.NET с помощью Swagger.
4. Открытый веб-интерфейс для .NET (OWIN).
5. Выбор правильной среды разработки .NET на сервере.

Введение


dotnet watch — это инструмент для разработчиков, который выполняет команду dotnet при изменении исходных файлов. С его помощью можно компилировать, тестировать или публиковать изменения в коде.

Начало работы


Сначала скачайте образец приложения. Оно содержит два проекта, WebApp (веб-приложение) и WebAppTests (модульные тесты для веб-приложения).
В консоли перейдите в папку WebApp и выполните команды:
  • dotnet restore
  • dotnet run

Консоль отобразит сообщения (пример ниже), которые укажут на то, что приложение работает и ожидает запросы.

$ dotnet run
Hosting environment: Production
Content root path: C:/Docs/aspnetcore/tutorials/dotnet-watch/sample/WebApp
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

В браузере перейдите по адресу http://localhost:5000/api/math/sum?a=4&b=5, вы увидите результат 9.

Если вы перейдете по адресу http://localhost:5000/api/math/product?a=4&b=5, снова получите 9 вместо ожидаемого 4 * 5 = 20. Мы это исправим ниже.

Добавление dotnet watch в проект


1. Добавьте Microsoft.DotNet.Watcher.Tools в файл .csproj:

<ItemGroup>
	<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="1.0.0" />
	</ItemGroup>

2. Выполните команду dotnet restore.

Выполнение команд dotnet с помощью dotnet watch


Любую команду dotnet можно выполнить с помощью dotnet watch, например:
Команда Команда с watch
dotnet run dotnet watch run
dotnet run -f net451 dotnet watch run -f net451
dotnet run -f net451 — --arg1 dotnet watch run -f net451 — --arg1
dotnet test dotnet watch test

Чтобы выполнить WebApp с помощью watcher, выполните команду dotnet watch run в папке WebApp. Консоль отобразит сообщения, что watch работает.

Внесение изменений с помощью dotnet watch


Убедитесь, что dotnet watch работает.

Давайте исправим ошибку в методе Product в MathController, чтобы он возвращал произведение, а не сумму:

public static int Product(int a, int b)
{
  return a * b;
}

Сохраните файл. В консоли отобразятся сообщения, которые укажут на то, что dotnet watch обнаружил изменение в файле и перезапустил приложение.

Убедитесь, что http://localhost:5000/api/math/product?a=4&b=5 выдает правильный результат.

Выполнение тестов с помощью dotnet watch


  • Измените метод Product в MathController к возврату суммы и сохраните файл.
  • В командной строке перейдите в WebAppTests.
  • Выполните dotnet restore.
  • Выполните dotnet watch test. Вы увидите сообщение о том, что тест не прошёл и watcher ожидает изменение в файле:

    Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.
    	Test Run Failed.

  • Исправьте метод Product так, чтобы он возвращал произведение.

dotnet watch обнаружит изменение в файле и перезапустит тесты. В консоли отобразится сообщение, что тест пройден успешно.

dotnet-watch на GitHub


dotnet-watch — это часть репозитория DotNetTools. Всё, что вы не нашли в этом руководстве, можно посмотреть именно там.

UPD: Благодарим за корректировку Илью.
  • +24
  • 7,9k
  • 7
Microsoft 355,11
Microsoft — мировой лидер в области ПО и ИТ-услуг
Поделиться публикацией
Комментарии 7
  • 0
    dotnet-watch — можно использовать на основном сервере или лучше только для локальной разработки?
    • 0
      А вы на продакшн исходники загружаете? Поидее там у вас только dll должны быть.
      • 0
        вообще хотелось бы иметь возможность рестарта приложения из исходного кода, но это можно без заморочек достичь только при изменении web.config
    • 0
      Возможность дебага в таком режиме добавили?
      Что на счет скорости? В последний раз, когда я пробовал, этот watch особо не прибавил в скорости изменил-увидел.
      • НЛО прилетело и опубликовало эту надпись здесь
        • +1
          Автоматизация кнопки — Stop/Run ?)
          • НЛО прилетело и опубликовало эту надпись здесь

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое