Как выполнить программу в visual studio
Перейти к содержимому

Как выполнить программу в visual studio

  • автор:

Учебник. Создание простого консольного приложения C# в Visual Studio (часть 1 из 2)

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

Изучая этот учебник, вы создадите и запустите консольное приложение C# с помощью Visual Studio, а также ознакомитесь с некоторыми возможностями интегрированной среды разработки (IDE) Visual Studio. Этот учебник представляет собой первую часть серии, состоящей из двух частей.

Изучив это руководство, вы:

  • Создание проекта Visual Studio
  • Создание консольного приложения C#
  • Запустите отладку приложения.
  • Закрытие приложения
  • Проверка готового кода

В рамках части 2 вы расширите это приложение, добавив дополнительные проекты, изучите методы отладки и будете использовать сторонние пакеты.

Необходимые компоненты

Необходимо установить Visual Studio.

Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.

Создание проекта

Сначала создайте проект приложения C#. Для этого типа проекта уже имеются все нужные файлы шаблонов.

Screenshot that shows the Create a new project window.

  1. Откройте Visual Studio и в начальном окне выберите Создать проект.
  2. В окне Создание проекта выберите C# в списке языков. Затем выберите Windows в списке платформ и Консоль в списке типов проектов. Применив фильтры по языку, платформе и типу проекта, выберите шаблон Консольное приложение и щелкните Далее.

Примечание. Если шаблон Консольное приложение не отображается, выберите Установка других средств и компонентов. Screenshot that shows the Install more tools and features link.После этого в Visual Studio Installer выберите рабочую нагрузку Кроссплатформенная разработка .NET Core. Screenshot showing the .NET Core cross-platform development workload in the Visual Studio Installer.Затем нажмите кнопку Изменить в Visual Studio Installer. Вам может быть предложено сохранить результаты работы; в таком случае сделайте это. Выберите Продолжить, чтобы установить рабочую нагрузку. После этого вернитесь к шагу 2 в процедуре Создание проекта.

  • В поле Имя проекта окна Настроить новый проект введите Calculator. Теперь щелкните Далее. Screenshot that shows naming your project
  • В окне Дополнительные сведения для целевой платформы должна быть указана версия .NET Core 3.1. Если это не так, выберите .NET Core 3.1. Затем нажмите Создать. Screenshot that shows making sure .NET Core 3.1 is selected in the Visual Studio открывает новый проект, включающий код по умолчанию «Hello World». Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне Обозревателя решений, которое обычно находится в правой части Visual Studio. Код «Hello World» по умолчанию вызывает метод WriteLine для отображения литеральной строки «Hello, World!» в окне консоли. Если нажать клавишу F5, программа по умолчанию запустится в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Для закрытия окна консоли нажмите любую клавишу.
  • Screenshot that shows the Create a new project window.

    1. Откройте Visual Studio и в начальном окне выберите Создать проект.
    2. В окне Создать проект выберите Все языки, а затем в раскрывающемся списке выберите C#. Выберите Windows в списке Все платформы. Затем в списке Все типы проектов выберите Консоль. Применив фильтры по языку, платформе и типу проекта, выберите шаблон Консольное приложение и нажмите Далее.

    Примечание. Если шаблон Консольное приложение не отображается, щелкните Установка других средств и компонентов. Screenshot that shows the Install more tools and features link.В окне Visual Studio Installer выберите рабочую нагрузку Разработка классических приложений .NET и щелкните Изменить. Screenshot showing the .NET desktop development workload in the Visual Studio Installer.

  • В окне Настроить новый проект введите Calculator в поле Имя проекта, а затем щелкните Далее. Screenshot that shows naming the project Calculator in the Configure your new project window.
  • В окне «Дополнительные сведения» выберите .NET 7.0 для целевой платформы, а затем нажмите кнопку «Создать«. Screenshot that shows .NET 7.0 selected in the Additional information window.Visual Studio открывает новый проект, включающий код по умолчанию «Hello World». Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне Обозревателя решений, которое обычно находится в правой части Visual Studio. Один оператор кода вызывает метод WriteLine для отображения литеральной строки «Hello, World!» в окне консоли. Если нажать клавишу F5, программа по умолчанию запустится в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Для закрытия окна консоли нажмите любую клавишу.

    Примечание. Начиная с .NET 6, новые проекты, использующие шаблон консоли, создают не такой код, как в предыдущих версиях. Дополнительные сведения см. на странице Новые шаблоны C# для создания инструкций верхнего уровня.

    Создание приложения

    В этом разделе выполняются следующие действия:

    • Ознакомление с некоторыми базовыми расчетами для целых чисел в C#.
    • Добавление кода для создания простого приложения калькулятора.
    • Отладка приложения для поиска и исправления ошибок.
    • Оптимизация кода для повышения эффективности.

    Вычисления с целыми числами

    Давайте начнем с базовых расчетов для целых чисел в C#.

    Screenshot that shows deleting the default Hello World code from your new calculator app.

    1. В редакторе кода удалите созданный по умолчанию код Hello, World!. В частности, удалите строку с текстом: Console.WriteLine(«Hello World!»); .
    2. Вместо нее введите следующий код:
     int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey(); 

    Обратите внимание на то, что при этом функция IntelliSense в Visual Studio предлагает возможность автовыполнения записи.

  • Нажмите зеленую кнопку Пуск или клавишу F5 рядом с калькулятором, чтобы создать и запустить программу. Screenshot that shows choosing the Calculator button to run the app from the toolbar.Откроется окно консоли с суммой 42 + 119, которая равна 161. Screenshot that shows a console window with the results of integer math.
  • (Необязательно) Можно изменить оператор, чтобы изменить результат. Например, можно изменить оператор + в строке кода int c = a + b; на — для вычитания, * для умножения или / для деления. Затем при запуске программы результат также изменится.
  • Закройте окно консоли.
  • Screenshot that shows the line to replace in the program file.

    1. В разделе Обозреватель решений в области справа выберите Program.cs, чтобы отобразить файл в редакторе кода.
    2. В редакторе кода замените код по умолчанию Hello World ( Console.WriteLine(«Hello World!»); ). Замените строку следующим кодом:
     int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey(); 

    Если вы вводите код, возможность Visual Studio IntelliSense предлагает выполнить автозавершение ввода.

  • Чтобы создать и запустить приложение, нажмите клавишу F5 или выберите зеленую стрелку рядом с элементом Calculator на верхней панели инструментов. Screenshot that showing selecting the Calculator button to run the app from the Debug toolbar.Откроется окно консоли с суммой 42 + 119, которая равна 161. Screenshot of a Console window showing the results of integer math.
  • Закройте окно консоли.
  • Кроме того, можно изменить оператор, чтобы изменить результат. Например, можно изменить оператор + в строке кода int c = a + b; на — для вычитания, * для умножения или / для деления. При запуске приложения результат изменяется соответствующим образом.
  • Добавление кода для создания калькулятора

    Давайте продолжим, добавив более сложный набор кода калькулятора в проект.

    1. В редакторе кода замените весь код в Program.cs следующим новым кодом:
     using System; namespace Calculator < class Program < static void Main(string[] args) < // Declare variables and then initialize to zero. int num1 = 0; int num2 = 0; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); // Ask the user to type the first number. Console.WriteLine("Type a number, and then press Enter"); num1 = Convert.ToInt32(Console.ReadLine()); // Ask the user to type the second number. Console.WriteLine("Type another number, and then press Enter"); num2 = Convert.ToInt32(Console.ReadLine()); // Ask the user to choose an option. Console.WriteLine("Choose an option from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); // Use a switch statement to do the math. switch (Console.ReadLine()) < case "a": Console.WriteLine($"Your result: + = " + (num1 + num2)); break; case "s": Console.WriteLine($"Your result: - = " + (num1 - num2)); break; case "m": Console.WriteLine($"Your result: * = " + (num1 * num2)); break; case "d": Console.WriteLine($"Your result: / = " + (num1 / num2)); break; > // Wait for the user to respond before closing. Console.Write("Press any key to close the Calculator console app. "); Console.ReadKey(); > > > 

    Screenshot of a Console window showing the Calculator app with prompts.

  • Нажмите кнопку Калькулятор или клавишу F5, чтобы запустить приложение. Откроется окно консоли.
  • В окне консоли используйте подсказки, чтобы суммировать числа 42 и 119. Теперь приложение должно выглядеть как на следующем снимке экрана:
    1. В редакторе кода замените весь код в Program.cs следующим новым кодом:
     // Declare variables and then initialize to zero. int num1 = 0; int num2 = 0; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); // Ask the user to type the first number. Console.WriteLine("Type a number, and then press Enter"); num1 = Convert.ToInt32(Console.ReadLine()); // Ask the user to type the second number. Console.WriteLine("Type another number, and then press Enter"); num2 = Convert.ToInt32(Console.ReadLine()); // Ask the user to choose an option. Console.WriteLine("Choose an option from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); // Use a switch statement to do the math. switch (Console.ReadLine()) < case "a": Console.WriteLine($"Your result: + = " + (num1 + num2)); break; case "s": Console.WriteLine($"Your result: - = " + (num1 - num2)); break; case "m": Console.WriteLine($"Your result: * = " + (num1 * num2)); break; case "d": Console.WriteLine($"Your result: / = " + (num1 / num2)); break; > // Wait for the user to respond before closing. Console.Write("Press any key to close the Calculator console app. "); Console.ReadKey(); 

    Screenshot of a Console window showing the Calculator app with prompts.

  • Нажмите кнопку Калькулятор или клавишу F5, чтобы запустить приложение. Откроется окно консоли.
  • В окне консоли используйте подсказки, чтобы суммировать числа 42 и 119. Теперь приложение должно выглядеть как на следующем снимке экрана:
  • Добавление возможностей десятичного числа

    Далее мы будем изменять этот код, добавляя функциональные возможности.

    Пока наше приложение принимает и возвращает только целые числа. Например, при запуске программы и делении числа 42 на число 119 вы получите результат 0, что для нас недостаточно точно.

    Screenshot of a Console window that shows the Calculator app returning an inexact whole number as a result.

    Чтобы исправить код для повышения точности при обработке десятичных чисел, выполните указанные ниже действия.

    Screenshot of a Console window showing the Calculator app that now returns a decimal numeral as a result.

    1. В Program.cs в редакторе Visual Studio нажмите клавиши CTRL+ H, чтобы открыть элемент управления «Найти и заменить».
    2. Введите int в элементе управления, а затем введите float в поле Заменить.
    3. Выберите значки Учитывать регистр и Слово целиком в элементе управления или нажмите сочетание клавиш ALT+C и ALT+W.
    4. Щелкните значок Заменить все или нажмите сочетание клавиш ALT+A, чтобы выполнить поиск и замену.
    5. Еще раз запустите приложение калькулятора и разделите число 42 на число 119. Теперь приложение возвращает не просто ноль, а десятичное число.

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

    Screenshot of a Console window showing the Calculator app that now accepts decimal numbers and returns a longer decimal result.

    1. Используйте элемент управления Найти и заменить, чтобы изменить каждый экземпляр переменной float на double и каждый экземпляр метода Convert.ToInt32 на Convert.ToDouble .
    2. Запустите приложение калькулятора и разделите число 42,5 на число 119,75. Теперь приложение принимает десятичные значения и возвращает более длинное десятичное число в качестве результата. В разделе Revise the code (Пересмотр кода) можно уменьшить количество десятичных разрядов в результатах.

    Отладка приложения

    Вы улучшили базовое приложение калькулятора, но ваше приложение еще не обрабатывает исключения, например ошибки ввода данных пользователем. Например, если пользователи попытаются разделить на ноль или ввести несоответствующий символ, приложение может остановить работу, вернуть ошибку или неожиданный нечисловой результат.

    Давайте рассмотрим несколько типичных ошибок во входных данных, найдем их с помощью отладчика, если они там есть, и исправим код, чтобы устранить их.

    Дополнительные сведения об отладчике и принципах его работы см. на странице Знакомство с отладчиком Visual Studio.

    Исправление ошибки деления на ноль

    При попытке деления числа на ноль консольное приложение может перестать отвечать, а затем покажет ошибку в редакторе кода.

    Screenshot of the Visual Studio code editor showing a line highlighted in yellow and an Exception Unhandled error for

    Иногда приложение не зависает, а отладчик не отображает ошибку деления на ноль. Вместо этого приложение может вернуть непредвиденный нечисловой результат, например символ бесконечности. Приведенное ниже исправление кода по-прежнему применимо.

    Чтобы изменить код для обработки этой ошибки, выполните указанные ниже действия.

      В Program.cs замените код case «d»: следующим кодом:

     // Ask the user to enter a non-zero divisor until they do so. while (num2 == 0) < Console.WriteLine("Enter a non-zero divisor: "); num2 = Convert.ToInt32(Console.ReadLine()); >Console.WriteLine($"Your result: / = " + (num1 / num2)); break; > 

    Screenshot showing the revised switch section in the Visual Studio code editor.

    Когда вы добавите новый код, раздел с оператором switch будет выглядеть так, как показано на следующем снимке экрана:

    Теперь, когда вы будете делить любое число на ноль, приложение запросит другое число и будет отображать запрос, пока вы не предоставите ненулевое значение.

    Screenshot of a Console window with a repeated prompt to provide a nonzero number.

    Исправление ошибки формата

    Если ввести буквенный символ, когда для приложения необходим цифровой символ, приложение остановит работу. Visual Studio отображает причину проблемы в редакторе кода.

    Screenshot showing an unhandled format error in the Visual Studio code editor.

    Screenshot showing an unhandled format error in the Visual Studio code editor.

    Чтобы решить эту проблему, можно выполнить рефакторинг ранее введенного кода.

    Пересмотр кода

    Чтобы не делегировать всю обработку кода классу program , можно разделить приложение на два класса: Calculator и Program .

    Класс Calculator выполняет основную часть работы для вычислений, а класс Program отвечает за пользовательский интерфейс и обработку ошибок.

      В Program.cs удалите все и добавьте следующий новый Calculator класс:

    class Calculator < public static double DoOperation(double num1, double num2, string op) < double result = double.NaN; // Default value is "not-a-number" if an operation, such as division, could result in an error. // Use a switch statement to do the math. switch (op) < case "a": result = num1 + num2; break; case "s": result = num1 - num2; break; case "m": result = num1 * num2; break; case "d": // Ask the user to enter a non-zero divisor. if (num2 != 0) < result = num1 / num2; >break; // Return text for an incorrect option entry. default: break; > return result; > > 
    class Program < static void Main(string[] args) < bool endApp = false; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); while (!endApp) < // Declare variables and set to empty. string numInput1 = ""; string numInput2 = ""; double result = 0; // Ask the user to type the first number. Console.Write("Type a number, and then press Enter: "); numInput1 = Console.ReadLine(); double cleanNum1 = 0; while (!double.TryParse(numInput1, out cleanNum1)) < Console.Write("This is not valid input. Please enter an integer value: "); numInput1 = Console.ReadLine(); >// Ask the user to type the second number. Console.Write("Type another number, and then press Enter: "); numInput2 = Console.ReadLine(); double cleanNum2 = 0; while (!double.TryParse(numInput2, out cleanNum2)) < Console.Write("This is not valid input. Please enter an integer value: "); numInput2 = Console.ReadLine(); >// Ask the user to choose an operator. Console.WriteLine("Choose an operator from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); string op = Console.ReadLine(); try < result = Calculator.DoOperation(cleanNum1, cleanNum2, op); if (double.IsNaN(result)) < Console.WriteLine("This operation will result in a mathematical error.\n"); >else Console.WriteLine("Your result: \n", result); > catch (Exception e) < Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message); >Console.WriteLine("------------------------\n"); // Wait for the user to respond before closing. Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: "); if (Console.ReadLine() == "n") endApp = true; Console.WriteLine("\n"); // Friendly linespacing. > return; > > 

    Screenshot showing a Console window with the refactored Calculator app.

    Screenshot showing a Console window with the refactored Calculator app.

    Закрытие приложения

    Screenshot that shows closing the Output pane in Visual Studio.

    1. Закройте приложение «Калькулятор», если оно еще открыто.
    2. Закройте область вывода в Visual Studio.
    3. В Visual Studio нажмите клавиши CTRL+S, чтобы сохранить приложение.

    Добавление системы управления исходным кодом Git

    Теперь, когда вы создали приложение, вы можете добавить его в репозиторий Git. Visual Studio упрощает этот процесс с помощью инструментов Git, которые вы можете использовать непосредственно из IDE.

    Git — это наиболее широко используемая современная система контроля версий, поэтому, независимо от того, являетесь ли вы профессиональным разработчиком или учитесь программировать, Git может быть для вас весьма полезным. Если вы новичок в Git, вы можете начать с сайта https://git-scm.com/. Там вы найдете памятки, популярную электронную книгу и видеоматериалы по основам GIT.

    Чтобы связать свой код с Git, начните с создания нового репозитория Git, в котором находится ваш код:

    1. В строке состояния в правом нижнем углу Visual Studio нажмите Добавить в систему управления версиями и выберите Git. Screenshot of the Git source control buttons below the Solution Explorer pane, with the Add to Source Control button highlighted.
    2. В диалоговом окне Создать репозиторий Git войдите в GitHub. Screenshot of the Create a Git Repository dialog window where you can sign in to GitHub.Имя репозитория заполняется автоматически в зависимости от расположения вашей папки. Ваш новый репозиторий является частным по умолчанию. Это означает, что только вы можете получить к нему доступ.

    Совет Независимо от того, является ли ваш репозиторий общедоступным или частным, лучше всего иметь удаленную резервную копию кода, надежно хранящуюся на GitHub. Даже если вы не работаете с командой, удаленный репозиторий позволит получать доступ к коду с любого компьютера.

    Screenshot of the repo status bar that

  • Щелкните Создать и отправить. После того как вы создали свой репозиторий, вы увидите информацию о статусе в строке состояния. Первый значок со стрелками показывает, сколько исходящих и входящих фиксаций в вашей текущей ветке. Вы можете использовать этот значок, чтобы получать любые входящие или исходящие фиксации. Вы также можете выбрать отображение этих фиксаций в первую очередь. Для этого щелкните значок и выберите Просмотреть исходящие/входящие. Второй значок с карандашом показывает количество незафиксированных изменений в вашем коде. Щелкните этот значок, чтобы просмотреть эти изменения в окне Git Changes.
  • Чтобы узнать больше о том, как использовать Git с вашим приложением, см. документацию по управлению версиями Visual Studio.

    Проверка: завершение кодирования

    В этом руководстве вы внесли много изменений в приложение Калькулятора. Теперь оно более эффективно использует вычислительные ресурсы и обрабатывает большинство ошибок во входных данных.

    Ниже мы собрали в один блок весь код:

     class Calculator < public static double DoOperation(double num1, double num2, string op) < double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error. // Use a switch statement to do the math. switch (op) < case "a": result = num1 + num2; break; case "s": result = num1 - num2; break; case "m": result = num1 * num2; break; case "d": // Ask the user to enter a non-zero divisor. if (num2 != 0) < result = num1 / num2; >break; // Return text for an incorrect option entry. default: break; > return result; > > class Program < static void Main(string[] args) < bool endApp = false; // Display title as the C# console calculator app. Console.WriteLine("Console Calculator in C#\r"); Console.WriteLine("------------------------\n"); while (!endApp) < // Declare variables and set to empty. string numInput1 = ""; string numInput2 = ""; double result = 0; // Ask the user to type the first number. Console.Write("Type a number, and then press Enter: "); numInput1 = Console.ReadLine(); double cleanNum1 = 0; while (!double.TryParse(numInput1, out cleanNum1)) < Console.Write("This is not valid input. Please enter an integer value: "); numInput1 = Console.ReadLine(); >// Ask the user to type the second number. Console.Write("Type another number, and then press Enter: "); numInput2 = Console.ReadLine(); double cleanNum2 = 0; while (!double.TryParse(numInput2, out cleanNum2)) < Console.Write("This is not valid input. Please enter an integer value: "); numInput2 = Console.ReadLine(); >// Ask the user to choose an operator. Console.WriteLine("Choose an operator from the following list:"); Console.WriteLine("\ta - Add"); Console.WriteLine("\ts - Subtract"); Console.WriteLine("\tm - Multiply"); Console.WriteLine("\td - Divide"); Console.Write("Your option? "); string op = Console.ReadLine(); try < result = Calculator.DoOperation(cleanNum1, cleanNum2, op); if (double.IsNaN(result)) < Console.WriteLine("This operation will result in a mathematical error.\n"); >else Console.WriteLine("Your result: \n", result); > catch (Exception e) < Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message); >Console.WriteLine("------------------------\n"); // Wait for the user to respond before closing. Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: "); if (Console.ReadLine() == "n") endApp = true; Console.WriteLine("\n"); // Friendly linespacing. > return; > > 

    Следующие шаги

    Перейдите ко второй части этого руководства:

    Создание и отладка выполняющегося кода с помощью Горячей перезагрузки в Visual Studio (C#, Visual Basic, C++)

    Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

    Начиная с Visual Studio 2022, Горячая перезагрузки в Visual Studio работает как для управляемых приложений .NET, так и для собственных приложений C++. В зависимости от типа приложения, над которым вы работаете, цель Горячей перезагрузки заключается в том, чтобы максимально уменьшить количество перезапусков приложения после изменений. Это позволяет повысить продуктивность, уменьшить время, затрачиваемое на ожидание перестроения и перезапуска приложений, а также на возврат к точке в приложении, на которой вы ранее остановились, и т. д.

    Это достигается за счет того, что вы можете изменить файлы кода приложения и немедленно применить изменения к выполняющемуся приложению, что также известно как Горячая перезагрузка. После применения изменений вы повторно исполняете код, выполнив действие в самом приложении (или с помощью определенного таймера и т. п.), а затем немедленно просматриваете изменения. При этом не нужно приостанавливать приложение с помощью точек останова.

    Обновление выполняющегося кода с помощью Горячей перезагрузки

    1. Откройте проект, основанный на поддерживаемом типе приложения. Дополнительные сведения о .NET см. в статье Поддержка приложений .NET.
    2. Убедитесь, что отладка машинного кода отключена в параметрах отладчика или в профиле запуска отладки.
    3. Запустите приложение с подключенным отладчиком, используя клавишу F5 или CTRL+F5, если это сочетание клавиш поддерживается для вашего приложения.
    4. Откройте файл кода C#, C++ или Visual Basic с помощью кода, который может быть повторно выполнен с помощью пользовательского интерфейса запущенного приложения (например, код программной части для кнопки или команды viewmodel), или что-либо, что активируется по таймеру и изменяет код.
    5. Примените изменения кода с помощью кнопки Горячая перезагрузка или сочетания клавиши ALT+F10.

    Поддерживаемые платформы приложений .NET и сценарии

    • При использовании Visual Studio 2022 и запуске приложения с помощью отладчика базовый интерфейс Горячей перезагрузки работает с большинством типов приложений .NET и версий платформы. В частности, поддерживается платформа .NET, .NET Core и .NET 5+ (как для C#, так и для Visual Basic в соответствующих случаях). Среди поддерживаемых типов приложений: веб-приложения (изменения кода программной части), настольные, мобильные, облачные и другие типы проектов. В этом сценарии предполагается, что если вы используете отладчик, то вам будет доступна Горячая перезагрузка и вы можете ее попробовать!
    • Если вы используете Visual Studio 2022, но не используете отладчик, например нажимаете сочетание клавиш CTRL+F5 для запуска приложения, Горячая перезагрузка доступна даже при нацеливании на большинство типов приложений .NET 6. Это означает, что приложения, не предназначенные для .NET 6 (.NET 5 или ниже), не поддерживают сценарий «без отладчика» и должны использовать отладчик для получения поддержки Горячая перезагрузка.
    • При использовании Visual Studio 2022 с приложением .NET 6 большинство сценариев поддерживаются. Это не ограничивается новой функцией «без отладчика» упоминание выше. Также поддерживаются другие новые возможности, такие как горячая перезагрузка проектов Blazor и, в более общем плане, изменение файлов Razor в любых приложениях ASP.NET Core и горячая перезагрузка CSS. Использование Visual Studio 2022 вместе с приложениями, предназначенными для .NET 6, обеспечивает наиболее эффективное использование Горячей перезагрузки.

    В следующей таблице показано, какие типы приложений поддерживают Горячую перезагрузку .NET с подключенным отладчиком (клавиша F5) и без подключенного отладчика (CTRL+F5), а также требуется ли .NET 6 для минимальной поддержки (т. е. использования клавиши F5). Для поддержки CTRL+F5 всегда требуется .NET 6. Также показана минимальная версия Visual Studio, которая поддерживает эту функцию.

    Тип приложения Требуется .NET 6 F5 CTRL + F5
    Код программной части ASP.NET No 16.11 17.0
    ASP.NET Razor (Blazor Server и ASP.NET Core) Да 17.0 17.0
    ASP.NET Razor (Blazor WASM) Да 17.1 17.0
    WPF No 16.11 17.0
    WinUI3 No 16.11
    WinForms No 16.11 17.0
    Консоль No 16.11 17.0
    .NET MAUI (WinUI 3) Да 17.1
    .NET MAUI (Android) Да 17.1
    .NET MAUI (iOS) Да 17.1
    Гибридное приложение Blazor .NET MAUI (WinUI 3) Да 17.1
    Гибридное приложение Blazor .NET MAUI (Android) Да 17.1
    Гибридное приложение Blazor .NET MAUI (iOS) Да 17.1

    Типы изменений, которые можно выполнить с помощью Горячей перезагрузки, определяются средой выполнения, а не методом, использованным для запуска приложения (F5 или CTRL+F5).

    В следующих разделах будут более подробно описана приведенная выше сводка.

    Поддержка приложений С++

    При использовании Visual Studio 2022 и запуске приложения с помощью отладчика можно выполнить горячую перезагрузку собственного приложения C++ при запуске в отладчике (F5) с помощью кнопки Горячая перезагрузка. Горячая перезагрузка также поддерживается для приложений, созданных с помощью проектов CMake и OpenFolder.

    Этот интерфейс работает на основе собственного режима «Изменить и продолжить». Поддерживаемые изменения см. в статье Изменить и продолжить.

    Visual Studio 2022 с приложением .NET при использовании отладчика

    При использовании Visual Studio 2022 и запуске приложения с помощью отладчика Горячая перезагрузка работает с большинством платформ приложений, включая распространенные типы приложений, например Console, Windows Forms (WinForms), WPF, UWP, WinUI 3 (см. примечание), а также большинство типов веб-проектов ASP.NET (для изменений кода программной части), включая ASP.NET MVC, веб-API и даже старые проекты ASP.NET Web Forms. Это только примеры. Если вы используете .NET и управляемый отладчик Visual Studio, вы должны получить базовую поддержку Горячей перезагрузки. Это означает, что в этом сценарии отлично работают даже такие проекты, как функции Azure.

    WinUI 3 по умолчанию использует отладку в смешанном режиме, которая не поддерживает Горячую перезагрузку. Это можно изменить в параметрах проекта, включив управляемый отладчик, который обеспечивает правильную работу Горячей перезагрузки. Для включения отладчика в проекте измените файл «launchSettings.json» и добавьте «nativeDebugging»: false после свойства commandName .

    Приложения .NET MAUI поддерживаются начиная с Visual Studio 2022 версии 17.1 (предварительная версия 1).

    Visual Studio 2022 с приложением .NET без отладчика

    Горячая перезагрузка доступна без отладчика при нацеливании на большинство типов приложений .NET 6, включая такие типы проектов, как Console, WPF, Windows Forms (WinForms), ASP.NET Core MVC, веб-API и Blazor.

    Эта функция предоставляется исключительно для .NET 6+. Приложения, не предназначенные для .NET 6 (.NET 5 или более ранних версий), не поддерживают сценарий «без отладчика» и должны использовать отладчик для получения доступа к Горячей перезагрузке.

    Кроме того, имейте в виду, что не все типы проектов в настоящее время поддерживают сценарий «без отладчика». В частности:

    • Приложения UWP не поддерживаются для Горячая перезагрузка без отладчика. Это предусмотрено специально, и добавление поддержки не планируется.
    • Приложения Xamarin.Forms, предназначенные для iOS и Android, не поддерживают Горячая перезагрузка .NET (независимо от того, запускаете ли вы приложение с отладчиком или без нее), но по-прежнему поддерживают Горячая перезагрузка XAML.
    • Приложения .NET MAUI поддерживаются только с отладчиком.

    Visual Studio 2022 с приложением .NET 6

    Если вы используете и Visual Studio 2022, и работаете с приложениями, нацеленными на .NET 6, вы получаете преимущества наиболее удобной и функциональной Горячей перезагрузки.

    В этом сценарии поддерживаются:

    • приложения Blazor (Server и WebAssembly (см. примечание));
    • изменение файлов Razor в Blazor и в обычных веб-сайтах ASP.NET Core;
    • Горячая перезагрузка CSS;
    • поддержка Горячей перезагрузки при запуске приложений без отладчика (как описано выше).

    Если вы будете нацеливать приложения на .NET 6, то будете получать улучшения в будущих обновлениях Visual Studio 2022, а также в основных выпусках .NET.

    В первом выпуске Visual Studio 2022 (версия 17.0) не включена поддержка Горячей перезагрузки для приложений Blazor WebAssembly при использовании отладчика Visual Studio, но эта функция доступна начиная с версии 17.1. Воспользоваться функцией Горячей перезагрузки можно, если запустить приложение в Visual Studio без отладчика или обновить его до выпуска 17.1.

    Поддерживаемые сценарии ASP.NET Core

    Базовые функции Горячей перезагрузки поддерживается для многих сценариев ASP.NET. Самой распространенной функцией является возможность изменения кода программной части и других файлов классов .NET для большинства типов веб-приложений. Эта функция работает при использовании отладчика Visual Studio везде, где ранее был доступен режим «Изменить и продолжить». Более подробное руководство: Поддержка Горячей перезагрузки .NET для ASP.NET Core.

    Для разработчиков ASP.NET Core, которые нацеливают приложения на .NET 6, существуют дополнительные возможности, недоступные для более ранних версий .NET. Эти возможности включают:

    • CSHTML. Редактирование файла Razor CSHTML поддерживает много типов изменений.
    • Обновление браузера. Редактирование файла Razor автоматически обновляет изменения в веб-браузере при отладке. Ранее эта функция была доступна только при запуске приложения без отладчика.
    • Горячая перезагрузка CSS. Теперь можно изменять CSS-файлы во время работы приложения, и изменения будут применяться к выполняющемуся приложению по мере ввода.
    • Без отладчика. Вы получаете поддержку Горячей перезагрузки при использовании Visual Studio для запуска веб-приложения без отладчика (CTRL+F5).

    Поддерживаемые изменения .NET

    Интерфейс .NET Горячая перезагрузка работает с помощью механизма «Изменить и продолжить» и Roslyn. Поддерживаемые изменения перечисляют типы изменений, поддерживаемых в настоящее время Roslyn, и потенциальные будущие улучшения.

    Неподдерживаемые сценарии .NET

    • Приложения Xamarin. Forms не поддерживают Горячую перезагрузку .NET в сценариях iOS и Android. Предоставляется частичная поддержка Горячей перезагрузки при нацеливании на приложение UWP. Это предусмотрено специально, и какие-либо улучшения в этом отношении не планируются. (Примечание. Горячая перезагрузка XAML останется доступной и будет поддерживаться для клиентов Xamarin.Forms с последней версией пакета SDK.)
    • Приложения .NET MAUI не поддерживаются до Visual Studio 2022 версии 17.1 ( предварительная версия 1). Начиная с версии 17.1 (предварительная версия 1) .NET MAUI поддерживается, но только с подключенным отладчиком.
    • Приложения, созданные с помощью F# или предназначенные для .NET Native, не поддерживают Горячая перезагрузка.

    Если вы используете Visual Studio без отладчика. Горячая перезагрузка .NET работает только для приложений, нацеленных на .NET 6.

    Кроме того, Горячая перезагрузка недоступны в некоторых конфигурациях проекта:

    • Если вы используете отладчик Visual Studio для запуска приложения, но вы отключили Edit and Continue в параметрах, Горячая перезагрузка не поддерживается.
    • Конфигурации выпуска или пользовательской сборки не поддерживаются. Проект должен использовать конфигурацию отладочной сборки.
    • Некоторые оптимизации запуска и компиляции не поддерживаются в Горячей перезагрузке .NET. Например, если профиль отладки проекта настроен следующим образом, Горячая перезагрузка .NET не поддерживается:
      • Для проекта включена обрезка. Например, если в файле проекта для профиля отладки для параметра PublishTrimmed задано значение true.
      • Для проекта включена функция ReadyToRun. Например, если в файле проекта для профиля отладки для параметра PublishReadyToRun задано значение true.

      Настройка Горячей перезагрузки

      Для настройки Горячей перезагрузки можно выбрать Параметры в раскрывающемся списке Горячая перезагрузка.

      Screenshot of configuring Hot Reload

      Или откройте Инструменты>Параметры>Отладка>Горячая перезагрузка .NET/C++.

      Среди параметров Горячей загрузки есть следующие:

      • Enable Hot Reload and Edit and Continue when debugging (Включить Горячую перезагрузку и режим «Изменить и продолжить» при отладке). Включает Горячую перезагрузку при запуске с подключенным отладчиком (F5).
      • Enable Hot Reload when starting without debugging (Включить Горячую перезагрузку при запуске без отладки). Включает Горячую перезагрузку при запуске без подключенного отладчика (Ctrl+F5).
      • Apply Hot Reload on File Save (Применить Горячую перезагрузку при сохранении файла). Применяет изменения кода при сохранении файла.

      Screenshot of settings for .NET Hot Reload

      Вы также можете управлять доступностью Горячей перезагрузки .NET на уровне проекта, изменяя файл «launchSetting.json» своих проектов .NET 6 и задавая параметру hotReloadEnabled значение false .

      Предупреждение

      Если появится следующее диалоговое окно, то Горячей перезагрузке не удалось применить текущие изменения без перезапуска. Вы можете либо перестроить приложение и применить изменения (перезапустить приложение), либо продолжить редактирование. При перестроении состояние приложения теряется. При продолжении редактирования возможно, что дополнительные изменения или исправления могут привести к тому, что Горячая перезагрузка снова работать.

      Screenshot of the apply changes dialog box

      Если вы выберете в диалоговом окне параметр Always rebuild (Всегда перестраивать), в текущем сеансе Visual Studio будет автоматически выполнять перестроение и перезагрузку без отображения диалогового окна.

      В первом выпуске Visual Studio (версия 17.0) диалоговое окно «Изменить и продолжить» все еще отображается при использовании Горячей перезагрузки с отладчиком. Эта ошибка была исправлена начиная со второй предварительной версии выпуска 17.1.

      Устранение неполадок

      Если вы используете сжатие ответов, см. сведения о сжатиях dotnet watch ответов в ASP.NET Core.

      Учебник. Создание приложения с математическим тестом

      Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

      В этой серии из четырех учебников вы создадите математический тест. Тест содержит четыре случайных арифметических примера, которые игрок должен решить в течение определенного времени.

      В интегрированной среде разработки Visual Studio имеются средства, необходимые для создания приложения. Подробнее см. в статье Добро пожаловать в интегрированную среду разработки Visual Studio.

      В первом учебнике вы узнаете, как:

      • создавать проект Visual Studio, который использует Windows Forms;
      • добавлять метки, кнопки и другие элементы управления в форму;
      • настраивать свойства для элементов управления;
      • сохранять и запускать проект.

      Необходимые компоненты

      Для выполнения шагов, описанных в этом учебнике, вам понадобится Visual Studio. Перейдите на страницу загрузки Visual Studio, чтобы получить бесплатную версию.

      Создание проекта Windows Forms

      Первый шаг в создании математического теста — это создание проекта приложения Windows Forms.

      1. Откройте Visual Studio.
      2. В окне запуска выберите Создание нового проекта. Screenshot that shows the Create a new project option in the Visual Studio start window.
      3. В окне Создать проект выполните поиск по фразе Windows Forms. Затем в списке Тип проекта выберите Рабочий стол.
      4. Выберите шаблон Приложение Windows Forms (.NET Framework) для C# или Visual Basic, а затем нажмите Далее. Screenshot that shows the Create a new project dialog box. The search box, the Project type list, and two templates are called out.

      Примечание. Если шаблон Приложение Windows Forms (.NET Framework) отсутствует, его можно установить из окна Создание проекта. В сообщении Не нашли то, что искали? выберите ссылку Установка других средств и компонентов. Screenshot that shows the Install more tools and features link from the Not finding what youПосле этого выберите пункт Разработка классических приложений .NET в Visual Studio Installer. Screenshot that shows the dot NET desktop development workload in Visual Studio Installer.В Visual Studio Installer выберите Изменить. Вам может быть предложено сохранить результаты работы. Выберите Продолжить, чтобы установить рабочую нагрузку.

      1. Откройте Visual Studio.
      2. В окне запуска выберите Создание нового проекта. Screenshot that shows the Create a new project option in the Visual Studio start window.
      3. В окне Создать проект выполните поиск по фразе Windows Forms. Затем в списке Тип проекта выберите Рабочий стол.
      4. Выберите шаблон Приложение Windows Forms (.NET Framework) для C# или Visual Basic, а затем нажмите Далее. Screenshot that shows the Create a new project dialog box. The search box, the Project type list, and two templates are called out.

      Примечание. Если шаблон Приложение Windows Forms (.NET Framework) отсутствует, его можно установить из окна Создание проекта. В сообщении Не нашли то, что искали? выберите ссылку Установка других средств и компонентов. Screenshot that shows the Install more tools and features link from the Not finding what youПосле этого выберите пункт Разработка классических приложений .NET в Visual Studio Installer. Screenshot that shows the dot NET desktop development workload in Visual Studio Installer.В Visual Studio Installer выберите Изменить. Вам может быть предложено сохранить результаты работы. Выберите Продолжить, чтобы установить рабочую нагрузку.

      Visual Studio создает решение для приложения. Решение является контейнером для всех проектов и файлов, необходимых приложению.

      Задание свойств формы

      Когда вы выберете шаблон и зададите имя файла, Visual Studio откроет форму. В этом разделе показано, как изменить некоторые свойства формы.

      1. В проекте выберите конструктор Windows Forms. На вкладке конструктора для C# считывается файл Form1.cs [Design], а для Visual Basic — Form1.vb [Design].
      2. Выберите форму Form1.
      3. В окне Свойства теперь отображаются свойства формы. Это окно обычно находится в правом нижнем углу окна Visual Studio. Если окно Свойства не отображается, выберите Вид>Окно свойств.
      4. В окне Свойства найдите свойство Text. В зависимости от того, как отсортирован список, может потребоваться прокрутить вниз. Введите значение Математический тест для значения Текст и нажмите клавишу ВВОД. Форма теперь содержит текст «Математический тест» в заголовке окна.

      Примечание. Свойства можно отображать по категориям или по алфавиту. Для переключения между свойствами в окне Свойства используйте соответствующие кнопки.

      Создание поля «Оставшееся время»

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

      Screenshot that shows the Time Left label and the remaining time label. The controls are lined up next to each other in the upper-right corner of the form.

      1. В левой части интегрированной среды разработки Visual Studio выберите вкладку Панель элементов. Если вы ее не видите, выберите пункт Представление>Панель элементов в строке меню или воспользуйтесь комбинацией клавиш CTRL+ALT+X.
      2. Выберите элемент управления Label в окне Панель элементов, а затем перетащите его на форму.
      3. В поле Свойства задайте следующие свойства метки:
        • Задайте для параметра (Name) значение timeLabel.
        • Измените значение свойства AutoSize на False, чтобы можно было изменить размер поля.
        • Измените значение свойства BorderStyle на FixedSingle для отрисовки линии вокруг поля.
        • Задайте для свойства Size значение 200, 30.
        • Выберите свойство Text, а затем щелкните клавишу BACKSPACE, чтобы очистить значение Text.
        • Щелкните знак плюса (+) рядом со свойством Font, а затем установите для свойства Size значение 15,75.
      4. Переместите метку в правый верхний угол формы. Используйте синие направляющие линии для размещения элемента управления в форме.
      5. Добавьте еще один элемент управления Label из панели элементов и установите для его размера шрифта значение 15,75.
      6. Задайте свойству Text значение Оставшееся время.
      7. Переместите метку так, чтобы она находилась левее метки timeLabel.

      Добавление элементов управления для примера на сложение

      Первая часть теста — пример на сложение. В этом разделе показано, как использовать метки для отображения этого примера.

      Screenshot that shows the first row of the math quiz. Labels are visible, and a control with arrow keys displays a zero.

      1. Добавьте элемент управления Label из области элементов в форму.
      2. В поле Свойства задайте следующие свойства метки:
        • Задайте для текста значение ? (вопросительный знак).
        • Задайте для параметра AutoSize значение False.
        • Задайте для свойства Size значение 60, 50.
        • Установите размер шрифта равным 18.
        • Установите для свойства TextAlign значение MiddleCenter.
        • Установите для свойства Location значение 50, 75, чтобы поместить элемент управления в нужное место в форме.
        • Установите для свойства (Name) значение plusLeftLabel.
      3. В форме выберите созданную метку plusLeftLabel. Скопируйте метку, выбрав пункт Изменить>Копировать или CTRL+C.
      4. Вставьте метку в форму три раза, выбрав пункт Изменить>Вставить или CTRL+V три раза.
      5. Разместите три новые метки так, чтобы они располагались в ряд справа от метки plusLeftLabel.
      6. Установите для свойства Text второй метки значение + (знак плюса).
      7. Установите для свойства (Name) третьей метки значение plusRightLabel.
      8. Установите для свойства Text четвертой метки значение = (знак равенства).
      9. Добавьте элемент управления NumericUpDown из области элементов в форму. Подробнее этот вид элементов управления мы рассмотрим позже.
      10. В поле Свойства задайте следующие свойства метки NumericUpDown:
        • Установите размер шрифта равным 18.
        • Установите ширину 100.
        • Задайте для параметра (Name) значение sum.
      11. Выровняйте элемент управления NumericUpDown по элементам управления Label для задачи на сложение.

      Добавление элементов управления для примеров на вычитание, умножение и деление

      Затем добавьте метки в форму для оставшихся арифметических примеров.

      1. Скопируйте четыре элемента управления Label и элемент управления NumericUpDown, который был создан для примеров на сложение. Вставьте их в форму.
      2. Переместите новые элементы управления на следующую строку под элементами управления для сложения.
      3. В поле Свойства задайте следующие свойства для новых элементов управления:
        • Задайте для свойства (Name) первой метки со знаком вопроса значение minusLeftLabel.
        • Установите для свойства Text второй метки значение (знак минуса).
        • Задайте для свойства (Name) второй метки со знаком вопроса значение minusRightLabel.
        • Задайте для свойства (Name) элемента управления the NumericUpDown значение difference.
      4. Скопируйте элементы управления для сложения и вставьте их в форму еще два раза.
      5. Для третьей строки:
        • Задайте для свойства (Name) первой метки со знаком вопроса значение timesLeftLabel.
        • Установите для свойства Text второй метки значение × (знак умножения). Вы можете скопировать знак умножения из этого учебника и вставить его в форму.
        • Задайте для свойства (Name) второй метки со знаком вопроса значение timesRightLabel.
        • Задайте для свойства (Name) элемента управления NumericUpDown значение product.
      6. Для четвертой строки:
        • Задайте для свойства (Name) первой метки со знаком вопроса значение dividedLeftLabel.
        • Установите для свойства Text второй метки значение ÷ (знак деления). Вы можете скопировать знак деления из этого учебника и вставить его в форму.
        • Задайте для свойства (Name) второй метки со знаком вопроса значение dividedRightLabel.
        • Задайте для свойства (Name) элемента управления NumericUpDown значение quotient.

      Screenshot that shows a math quiz with four rows of problems. Labels and controls with arrow keys are visible.

      Добавление кнопки запуска и задание порядка перехода по клавише TAB

      В этом разделе показано, как добавить кнопку запуска. Также необходимо указать последовательность перехода для элементов управления. Этот порядок определяет, как в тесте осуществляется переход от одного элемента управления к другому с помощью клавиши TAB.

      Screenshot that shows a math quiz with four rows of problems and a start button.

      1. Добавьте элемент управления Button из области элементов в форму.
      2. В поле Свойства задайте следующие свойства для элемента управления Button:
        • Задайте для свойства (Name) значение startButton.
        • Задайте свойству Text значение Начать тест.
        • Установите размер шрифта равным 14.
        • Установите для свойства AutoSize значение True, которое вызывает автоматическое изменение размера кнопки в зависимости от размера текста.
        • Установите для TabIndex значение 0. При этом значении кнопка запуска первой появляется в фокусе.
      3. Разместите кнопку по центру в нижней части формы.
      4. В поле Свойства задайте свойство TabIndex для каждого элемента управления NumericUpDown:
        • Установите для свойства TabIndex элемента управления NumericUpDown sum значение 1.
        • Установите для свойства TabIndex элемента управления NumericUpDown difference значение 2.
        • Установите для свойства TabIndex элемента управления NumericUpDown product значение 3.
        • Установите для свойства TabIndex элемента управления NumericUpDown quotient значение 4.

      Запуск приложения

      Арифметические примеры пока не работают в тесте. Но вы по-прежнему можете запустить приложение, чтобы проверить, работает ли значение TabIndex должным образом.

      1. Для сохранения приложения используйте один из указанных ниже методов:
        • Нажмите клавиши CTRL+SHIFT+S.
        • В строке меню выберите Файл>Сохранить все.
        • На панели инструментов нажмите кнопку Сохранить все.
      2. Для запуска приложения используйте один из следующих методов:
        • Нажмите клавишу F5.
        • В строке меню выберите Отладка>Начать отладку.
        • На панели инструментов нажмите кнопку Запустить.
      3. Дважды щелкните клавишу TAB, чтобы увидеть, как фокус перемещается от одного элемента управления к другому.

      Следующие шаги

      Перейдите к следующему учебнику, чтобы добавить случайные арифметические примеры и обработчик событий в математический тест.

      Знакомство с отладчиком Visual Studio

      Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

      В этом разделе представлены средства отладчика, предоставляемые Visual Studio. В контексте Visual Studio отладка приложения обычно означает запуск приложения с подключенным отладчиком (то есть в режиме отладчика). При этом в отладчике доступно множество способов наблюдения за выполнением кода. Вы можете выполнить шаги по коду и просмотреть значения, хранящиеся в переменных, вы можете настроить контроль над переменными, чтобы увидеть, когда изменяются значения, можно проверить путь выполнения кода и т. д. Если это первый раз, когда вы попытались выполнить отладку кода, вам может потребоваться прочитать отладку для абсолютных начинающих , прежде чем перейти к этому разделу. Если вы пытаетесь выполнить определенную задачу и должны знать, какую функцию следует использовать, см . средство поиска функций отладчика.

      Описанные здесь функции применяются к C#, C++, Visual Basic, JavaScript и другим языкам, поддерживаемым Visual Studio (если не указано иное).

      Установка точки останова и запуск отладчика

      Точки останова полезны, если вам известны строка или раздел кода, которые вы хотите подробно изучить в среде выполнения. Дополнительные сведения о различных типах точек останова, которые можно задать, например об условных точках останова и точках останова в функциях, см. в разделе Использование точек останова.

      Для отладки нужно запустить приложение с отладчиком, подключенным к процессу приложения. Для этого:

      • Нажмите клавишу F5 (Отладка > Начать отладку), которая является наиболее распространенным методом.

      Однако сейчас у вас, возможно, не задано ни одной точки останова для проверки кода приложения, поэтому мы сначала зададим их, а затем начнем отладку. Точки останова — это самая основная и важная функция надежной отладки. Точка останова указывает, где Visual Studio следует приостановить выполнение кода, чтобы вы могли проверить значения переменных или поведение памяти либо выполнение ветви кода.

      Если вы открыли файл в редакторе кода, точку останова можно задать, щелкнув в поле слева от строки кода.

      Set a Breakpoint

      Start Debugging

      Нажмите клавишу F5 (Отладка > запуска отладки) или кнопку «Начать отладку» на панели инструментов отладки, а отладчик запускается в первую точку останова, с которой она сталкивается. Если приложение еще не запущено, при нажатии клавиши F5 запускается отладчик и выполняется остановка в первой точке останова.

      Переход по коду в отладчике с помощью пошаговых команд

      Мы указываем сочетания клавиш для большинства команд, так как они ускоряют навигацию по коду вашего приложения. (Аналогичные команды, такие как команды меню, отображаются в круглых скобках.) Дополнительные сведения об использовании команд пошагового выполнения см. в разделе Навигация по коду в отладчике.

      Для запуска приложения с подключенным отладчиком нажмите клавишу F11 (Отладка > Шаг с заходом). F11 — это команда Шаг с заходом, которая выполняет приложение с переходом к следующему оператору. При запуске приложения с помощью клавиши F11 отладчик останавливается на первом выполняемом операторе.

      F11 Step Into

      F11 Step Into

      Желтая стрелка представляет оператор, на котором приостановлен отладчик. В этой же точке приостанавливается выполнение приложения (этот оператор пока не выполнен).

      Клавишу F11 удобно использовать для более детальной проверки потока выполнения. (Чтобы ускорить переход по коду, мы также показываем другие варианты.) По умолчанию отладчик пропускает код, отличный от пользователя (если требуется дополнительные сведения, см . только мой код).

      В управляемом коде вы увидите диалоговое окно с запросом о том, хотите ли вы получать уведомления при автоматическом обходе свойств и операторов (поведение по умолчанию). Если вы хотите изменить этот параметр позже, отключите параметр Шаг с обходом свойств и операторов в меню Инструменты > Параметры в разделе Отладка.

      Шаг с обходом по коду для пропуска функций

      Когда вы находитесь в строке кода, представляющей собой вызов функции или метода, можно нажать клавишу F10 (Отладка > Шаг с обходом) вместо F11.

      Клавиша F10 продолжает выполнение отладчика без захода в функции или методы в коде приложения (код продолжает выполняться). Нажав клавишу F10, вы можете обойти код, который вас не интересует. Так можно быстро перейти к важному для вас коду. Дополнительные сведения об использовании команд пошагового выполнения см. в разделе Навигация по коду в отладчике.

      Быстрое выполнение до точки в коде с помощью мыши

      Использование кнопки Выполнение до щелкнутого аналогично установке временной точки останова. Кроме того, эта команда удобна для быстрой работы в видимой области кода приложения. Выполнение до щелкнутого можно использовать в любом открытом файле. Дополнительные сведения об этой функции и аналогичных функциях навигации см. в разделе Выполнение до определенного места в коде.

      Screenshot of the Run to Click button from the Visual Studio Debugger. The button indicates that execution should run to the line where the button is placed.

      Пока в отладчике наведите указатель мыши на строку кода, пока не появится кнопка «Запустить» (выполнить выполнение здесь).

      Screenshot of the Visual Studio Debugger showing the Run to Click button appearing just to the left of a call to a function.

      Screenshot of the Visual Studio Debugger showing the Run to Click button appearing just to the left of a call to a function.

      Кнопка Выполнить о щелчка (Выполнить до этого места) доступна начиная с Visual Studio 2017.

      Нажмите кнопку выполнения до щелкнутого (Выполнить до этого места). Отладчик продолжает выполнение до строки кода, которую вы щелкнули.

      Вывод отладчика из текущей функции

      В некоторых случаях может потребоваться продолжить сеанс отладки, однако полностью проведя отладчик сквозь текущую функцию.

      Нажмите сочетание клавиш SHIFT + F11 (или выберите Отладка > Шаг с выходом).

      Эта команда возобновляет выполнение приложения (и перемещает отладчик) до возврата текущей функции.

      Выполнить до текущей позиции

      Если вы находитесь в режиме редактирования кода (то есть работа отладчика не приостановлена), щелкните правой кнопкой мыши строку кода в приложении и выберите команду Выполнить до текущей позиции (или нажмите клавиши CTRL+F10). Эта команда запускает отладку и задает временную точку останова на текущей строке кода. Дополнительные сведения об этой функции и аналогичных функциях навигации см. в разделе Выполнение до определенного места в коде.

      Run to Cursor

      Run to Cursor

      Если имеются заданные точки останова, отладчик приостанавливается в первой достигнутой точке останова.

      Нажимайте клавишу F5, пока не достигнете строки кода, для которой выбрали Выполнить до текущей позиции.

      Эта команда удобна, когда вы редактируете код и хотите быстро задать временную точку останова и одновременно запустить отладчик.

      Вы можете использовать функцию Выполнить до текущей позиции в окне Стек вызовов во время отладки.

      Быстрый перезапуск приложения

      Restart App

      Нажмите кнопку «Перезапустить» на панели инструментов отладки (или нажмите клавиши CTRL+SHIFT+F5).

      Кнопка Перезапустить позволяет сэкономить время, затрачиваемое на остановку приложения и перезапуск отладчика. Отладчик приостанавливается в первой точке останова, достигнутой при выполнении кода.

      Stop Debugging

      Если вы хотите остановить отладчик и вернуться в редактор кода, можно нажать красную кнопку остановки вместо перезапуска .

      Редактирование кода в реальном времени

      Visual Studio 2022 поддерживает динамическое редактирование кода в процессе отладки. Дополнительные сведения см. в следующих разделах.

      • Создание и отладка выполняющегося кода
      • Создание и отладка выполняющегося кода XAML с помощью Горячей перезагрузки XAML
      • Изменить и продолжить

      Изменение кода и продолжение отладки (C#, VB, C++, XAML)

      В большинстве языков, поддерживаемых Visual Studio, можно изменять код во время сеанса отладки, а затем продолжать отладку. Для использования этой функции щелкните код, чтобы установить в нем курсор, когда отладчик приостановлен, внесите изменения и нажмите клавишу F5, F10 или F11, чтобы продолжить отладку. Дополнительные сведения об этой функции и ее ограничениях см. в статье Изменить и продолжить.

      Сведения об изменении кода XAML во время сеанса отладки см. в статье Создание и отладка выполняющегося кода XAML с помощью горячей перезагрузки XAML.

      Проверка переменных с помощью подсказок по данным

      Теперь, когда вы немного освоились, у вас есть хорошая возможность проверить состояние приложения (переменные) с помощью отладчика. Функции, позволяющие проверять переменные, являются одними из самых полезных в отладчике. Реализовывать эту задачу можно разными способами. Часто при попытке выполнить отладку проблемы пользователь старается выяснить, хранятся ли в переменных значения, которые требуются в определенном состоянии приложения. Подробные сведения об использовании подсказок по данным см. в разделе Просмотр значений данных в подсказках по данным.

      В режиме приостановки в отладчике наведите указатель мыши на объект, чтобы увидеть его текущее значение или значение по умолчанию.

      View a Data Tip

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

      Часто при отладке бывает необходимо быстро проверить значения свойств для объектов. Лучше всего для этого подходят подсказки по данным.

      Проверка переменных с помощью окон «Видимые» и «Локальные»

      В окне Видимые отображаются переменные вместе с текущим значением и типом. Окно Видимые показывает все переменные, используемые в текущей или предыдущей строке (в C++ это окно показывает переменные в трех предыдущих строках кода; сведения о поведении для конкретного языка см. в документации). Дополнительные сведения об использовании этих окон см. в статье Проверка переменных в окнах «Видимые» и «Локальные».

      Во время отладки взгляните на окно Видимые в нижней части редактора кода.

      Autos Window

      Autos Window

      В JavaScript окно Локальные поддерживается, а окно Видимые — нет.

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

      Locals Window

      Locals Window

      В этом примере объекты this и f находятся в области действия. Дополнительные сведения см. в статье Проверка переменных в окнах «Видимые» и «Локальные».

      Установка контрольного значения

      В окне Контрольное значение можно указать переменную (или выражение), которую необходимо отслеживать. Дополнительные сведения см. в статье Установка контрольных значений с помощью окон «Контрольное значение» и «Быстрая проверка».

      Во время отладки щелкните правой объект кнопкой мыши и выберите пункт Добавить контрольное значение.

      Watch Window

      Watch Window

      В этом примере у вас есть контрольное значение, заданное для объекта, и по мере перемещения по отладчику вы можете наблюдать за изменением его значения. В отличие от других окон переменных, в окне Контрольное значение всегда отображаются просматриваемые вами переменные (они выделяются серым цветом, когда находятся вне области действия).

      Изучение стека вызовов

      В окне Стек вызовов показан порядок вызова методов и функций. В верхней строке показана текущая функция. Во второй строке показана функция или свойство, из которого она вызывалась, и т. д. Стек вызовов хорошо подходит для изучения и анализа потока выполнения приложения. Дополнительные сведения см. в статье о просмотре стека вызовов.

      Окно Стек вызовов аналогично перспективе «Отладка» в некоторых интегрированных средах разработки, например Eclipse.

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

      Examine the Call Stack

      Examine the Call Stack

      Дважды щелкните строку кода, чтобы просмотреть исходный код. При этом также изменится текущая область, проверяемая отладчиком. Это не перемещает отладчик.

      Для выполнения других задач можно воспользоваться контекстными меню из окна Стек вызовов. Например, можно вставлять точки останова в указанные функции, перезапускать приложение с помощью функции Выполнение до текущей позиции и изучать исходный код.

      Проверка исключения

      Когда приложение выдает исключение, отладчик переходит к строке кода, вызвавшей исключение. Подробные сведения см. в разделе Проверка исключения с помощью помощника по исправлению ошибок.

      Exception Helper

      В этом примере Помощник по исправлению ошибок отображает исключение System.NullReferenceException и ошибку с сообщением о том, что для экземпляра объекта не задана ссылка на объект. Также он сообщает, что строковое значение имело значение NULL при попытке вызвать метод Trim .

      Exception Helper

      В этом примере помощник по исправлению ошибок показывает исключение System.Argument и сообщение об ошибке, где сказано, что путь имеет недопустимую форму. Таким образом, мы знаем, что ошибка произошла в аргументе метода или функции.

      В этом примере вызов DirectoryInfo выдал ошибку на пустой строке, хранящейся в переменной value .

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

      Разверните узел Параметры исключений, чтобы просмотреть дополнительные параметры для обработки исключения этого типа, однако в рамках этого тура ничего менять не требуется.

      Настройка отладки

      Вы можете настроить проект для сборки, как описано в статье о конфигурации отладки или выпуска, настроить свойства проекта для отладки или настроить общие параметры для отладки. Кроме того, можно настроить отладчик для вывода пользовательских сведений с помощью таких компонентов, как атрибута DebuggerDisplay либо платформы NatVis для C/C++.

      Свойства отладки зависят от типа проекта. Например, можно задать аргумент, который будет передан в приложение при запуске. Чтобы получить доступ к свойствам проекта приложения, щелкните имя проекта правой кнопкой мыши в обозревателе решений и выберите Свойства. Свойства отладки обычно отображаются на вкладке Сборка или Отладка в зависимости от типа проекта.

      Начиная с Visual Studio 2022, вкладка Отладка для проектов .NET содержит ссылку на пользовательский интерфейс профилей запуска отладки, где можно задать свойства, связанные с отладкой.

      Project properties

      Project properties

      Отладка интерактивных приложений ASP.NET в Службе приложений Azure

      Сведения об отладке в службе приложение Azure см. в статье «Отладка приложений Azure».

      Для Visual Studio Enterprise (только) отладчик моментальных снимков принимает моментальный снимок ваших рабочих приложений при выполнении кода. Чтобы указать отладчику на необходимость создать моментальный снимок, следует установить точки прикрепления и точки ведения в коде. Отладчик позволяет увидеть источник ошибки, не затрагивая трафик рабочего приложения. Средство Snapshot Debugger позволяет значительно сократить затраты времени на устранение проблем, возникающих в рабочих средах.

      Launch the snapshot debugger

      Коллекция моментальных снимков доступна для приложений ASP.NET, выполняющихся в Службе приложений Azure. Приложения ASP.NET должны выполняться на платформе .NET Framework 4.6.1 или более поздней версии, а приложения ASP.NET Core должны выполняться на платформе .NET Core 2.0 или более поздней версии в Windows.

      Просмотр моментальных снимков с помощью возврата на шаг назад в IntelliTrace (Visual Studio Enterprise)

      Функция возврата на шаг назад в IntelliTrace автоматически создает моментальный снимок вашего приложения для каждого события точки останова и шага отладчика. Используя записанные моментальные снимки, вы можете возвращаться к этим точкам останова и шагам, просматривая предыдущее состояние приложения. Возможность возврата на шаг назад в IntelliTrace позволяет сэкономить время в тех случаях, когда вам нужно просмотреть предыдущее состояние приложения, но не требуется перезапускать отладку или воссоздавать необходимое состояние приложения.

      Для просмотра моментальных снимков и перехода между ними используйте кнопки На шаг назад и На шаг вперед на панели инструментов отладки. С помощью этих кнопок можно перейти к событиям, которые отображаются на вкладке События в окне Средства диагностики.

      Step Backward and Forward Buttons

      Отладка проблем производительности

      Если приложение работает слишком медленно или использует слишком много памяти, возможно, вам следует протестировать его с помощью средств профилирования на раннем этапе. Дополнительные сведения о средствах профилирования, таких как средство загрузки ЦП и анализатор памяти, см. в разделе Знакомство со средствами профилирования.

      Следующие шаги

      В этом руководстве вы кратко познакомились с функциями отладчика. Отдельные функции, например точки останова, вы можете изучить более подробно.

      Use breakpoints in the Visual Studio debugger (Использование точек останова в отладчике Visual Studio)

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *