Создание консольных приложений с помощью Visual Studio 2022

Цель этого раздела - показать, как создать консольное приложение с помощью Visual Studio 2022 для Windows. Если у вас нет компьютера с Windows или вы хотите использовать Visual Studio Code, то можете пропустить этот раздел, так как код будет тем же самым, просто инструментарий будет другим.

Управление несколькими проектами с помощью Visual Studio 2022

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

Написание кода с помощью Visual Studio 2022

Давайте приступим к написанию кода!

  1. Запустите Visual Studio 2022.

  2. В окне Пуск нажмите Создать новый проект.

  3. В диалоговом окне Create a new project(Создание проекта) введите console(консоль) в поле Search for templates (Поиск шаблонов) и выберите Console App (Консольное приложение), убедившись, что вы выбрали шаблон проекта C#, а не другой язык, такой как Visual Basic или C++, и что он кроссплатформенный, а не для .NET Framework, который предназначен только для Windows, как показано на рисунке 1.3:

4. Нажмите Next(Далее)

5. В диалоговом окне Configure your new project (Настроить новый проект) введите HelloCS для имени проекта, введите C:\cs11dotnet7 для расположения и введите Chapter01 для имени решения.

6. Нажмите Next(Далее)

7. В диалоговом окне Additional information(Дополнительные сведения), в раскрывающемся списке Target Framework(Платформа), обратите внимание на выбор версий .NET с краткосрочной и долгосрочной поддержкой, а затем выберите .NET 6.0 или .NET 7.0. Для проектов, о которых пойдет речь в этой главе, нам не понадобится функциональность, характерная для .NET 7.

8. Оставьте флажок Do not use top-level statements (Не использовать операторы верхнего уровня) снятым, а затем нажмите Create(Создать).

9. Если код не отображается, то в Solution Explorer(Обозреватель решений) двойным щелчком откройте файл с именем Program.cs и обратите внимание, что в обозревателе решений отображается проект HelloCS, как показано на рисунке 1.4:

10. В Program.cs обратите внимание, что код состоит только из комментария и одного оператора, поскольку в нем используется функция программы верхнего уровня, представленная в C# 9, как показано в следующем коде:

11. В Program.cs измените строчку 2 так, чтобы текст, который выводится в консоль, был Hello, C#!

Компиляция и выполнение кода с помощью Visual Studio(64)

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

  1. В Visual Studio перейдите в Debug | Start Without Debugging(Отладка| Запуск без отладки)

  2. Вывод в консоли покажет результат выполнения вашего приложения, как показано на рисунке 1.5:

  3. Нажмите любую клавишу, чтобы закрыть окно консоли и вернуться в Visual Studio.

  4. По желанию закройте Properties(Свойства), чтобы освободить больше вертикального пространства для Solution Explorer(Обозреватель решений).

  5. Дважды щелкните в обозревателе решений на проект HelloCS и обратите внимание, что файл проекта HelloCS.csproj показывает, что это консольное приложение нацелено либо на net6.0, либо на net7.0, в зависимости от того, что вы выбрали при создании проекта, как показано на рисунке 1.6.

  6. На панели инструментов Solution Explorer(Обозреватель решений) включите кнопку Show All Files(Показать все файлы) и обратите внимание, что папки bin и obj, созданные компилятором, видны, как показано на рисунке 1.6:

Работа с папками и файлами, создаваемыми компилятором

Были созданы две папки, сгенерированные компилятором, с именами obj и bin. Вам пока не нужно заглядывать в эти папки или разбираться в их файлах (но не стесняйтесь подглядывать, если вам интересно).

Помните, что для выполнения своей работы компилятор должен создавать временные папки и файлы. Вы можете удалить эти папки и их файлы, и они будут автоматически воссозданы при следующей "сборке" или запуске проекта. Разработчики часто удаляют эти временные папки и файлы, чтобы "очистить" проект. В Visual Studio даже есть команда в меню Build(Сборка) под названием Clean Solution(Очистить решение), которая удаляет некоторые из этих временных файлов за вас. Аналогичная команда в Visual Studio Code называется dotnet clean. Краткие описания того, что содержат эти две папки, приведены в следующем списке:

  • Папка obj содержит один скомпилированный объектный файл для каждого файла исходного кода. Эти объекты еще не соединены в окончательный исполняемый файл.

  • Папка bin содержит бинарный исполняемый файл для приложения или библиотеки классов. Мы рассмотрим это более подробно в главе 7, Упаковка и распространение типов .NET.

Разбор программ верхнего уровня

Если вы видели старые проекты .NET, то, возможно, ожидали увидеть больше кода, даже для вывода простого сообщения. Это происходит потому, что часть кода пишется компилятором за вас, когда вы нацеливаетесь на .NET 6 или более позднюю версию.

Если бы вы создали проект с .NET SDK 5.0 или более ранней версией, или если бы вы установили флажок с надписью Do not use top-level statements(Не использовать операторы верхнего уровня), то в файле Program.cs было бы больше операторов, как показано в следующем коде:

using System; // Не требуется в .NET 6 или более поздних версиях.
namespace HelloCS
{
  class Program
   {
     static void Main(string[] args)
    {
      Console.WriteLine("Hello, World!");
    }
   }
}

Во время компиляции с помощью .NET SDK 6.0 или более поздней версии генерируется весь шаблонный код для определения пространства имен, класса Program и его метода Main, который оборачивается вокруг написанных вами команд. При этом используется функция, представленная в .NET 5 под названием top-level programs(Программы верхнего уровня), но только в .NET 6 компания Microsoft обновила шаблон проекта для консольных приложений, чтобы он использовался по умолчанию.

Ключевые моменты, которые следует помнить о программах верхнего уровня, включают следующее:

  • В проекте может быть только один такой файл.

  • Любые операторы using должны располагаться в верхней части файла.

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

  • Несмотря на то, что вы должны назвать метод Main, если вы явно определяете его, метод называется Main при создании компилятором.

Оператор using System; в верхней части файла осуществляет введение пространства имен System. Это позволяет оператору Console.WriteLine работать. Почему нам не нужно создавать его в нашем проекте?

Неявно импортированные пространства имен

Хитрость заключается в том, что нам по-прежнему нужно импортировать пространство имен System, но теперь это делается за нас, используя комбинации функций, представленных в C# 10 и .NET 6. Давайте посмотрим, как это сделать:

  1. В Solution Explorer раскройте папку obj, раскройте папку Debug, раскройте папку net6.0 или net7.0 и откройте файл HelloCS.GlobalUsings.g.cs.

  2. Обратите внимание, что этот файл автоматически создается компилятором для проектов, ориентированных на .NET 6 или более поздние версии. Файл использует функцию, введенную в C# 10 под названием импорт глобальных пространств имен, которая импортирует некоторые часто используемые пространства имен и импортирует некоторые часто используемые пространства имен, например как System, для использования во всех файлах кода, как показано в следующем коде:

  3. В Solution Explorer нажмите кнопку Show All Files, чтобы скрыть папки bin и obj.

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

Выявление скрытого кода путем выброса исключения

Теперь давайте выясним, как был написан скрытый код:

  1. В Program.cs после оператора, который выводит сообщение, добавьте оператор, который выбрасывает новое исключение, как показано ниже. исключение, как показано в следующем коде:

  2. В Visual Studio перейдите в Debug | Start Without Debugging. (Не запускайте проект с отладкой, иначе исключение будет поймано отладчиком!)

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

    $, который имеет параметр args для передачи аргументов, как показано на рисунке 1.7:

  4. Нажмите любую клавишу, чтобы закрыть окно консольного приложения и вернуться в Visual Studio.

Добавление второго проекта с помощью Visual Studio 2022

Давайте добавим второй проект в наше решение, чтобы изучить, как работать с несколькими проектами: 1. В Visual Studio перейдите в меню File | Add | New Project. 2. В диалоговом окне Добавить новый проект в разделе Недавние шаблоны проектов выберите Console App [C#] и затем нажмите кнопку Next. 3. В диалоге Configure your new project, для Project name введите AboutMyEnvironment, оставьте местоположение как C:\cs11dotnet7\Chapter01, а затем нажмите Далее. 4. В диалоге Дополнительная информация выберите .NET 6.0 или .NET 7.0, а затем нажмите Создать. 5. В проекте AboutMyEnvironment в файле Program.cs измените утверждение для вывода текущего каталога и версии операционной системы. каталог и версию операционной системы, как показано в следующем коде:

// См. https://aka.ms/new-console-template для получения дополнительной информации

  1. В Solution Explorer щелкните правой кнопкой мыши решение Chapter01, выберите Set Startup Projects..., установите текущий выбор, а затем нажмите OK.

  2. В Solution Explorer щелкните проект AboutMyEnvironment (или любой файл или папку в нем), и обратите внимание, что Visual Studio указывает, что AboutMyEnvironment теперь является стартовым проектом. выделив имя проекта жирным шрифтом.

  3. Перейдите в Debug | Start Without Debugging, чтобы запустить проект AboutMyEnvironment, и обратите внимание на результат, как показано на рисунке 1.8:

  1. Нажмите любую клавишу, чтобы закрыть окно консольного приложения и вернуться в Visual Studio

Создание консольных приложений с помощью Visual Studio Code

Цель этого раздела - показать, как создать консольное приложение, используя Visual Studio Code и dotnet интерфейс командной строки (CLI). Если вы никогда не хотели попробовать Visual Studio Code или .NET Interactive Notebooks, то, пожалуйста, пропустите этот и следующий разделы, а затем продолжите раздел Обзор папок и файлов. этот и следующий разделы, а затем продолжите раздел Обзор папок и файлов для проектов. Инструкции и скриншоты в этом разделе приведены для Windows, но те же самые действия будут работать с Visual Studio Code на macOS и Linux.

Основные различия будут касаться действий в родной командной строке, таких как удаление файла: как команда и путь, скорее всего, будут отличаться в Windows или macOS и Linux. К счастью, инструмент dotnet CLI идентичен на всех платформах.

Управление несколькими проектами с помощью Visual Studio Code

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

Написание кода с помощью Visual Studio Code

Давайте приступим к написанию кода!

  1. Запустите Visual Studio Code.

  2. Убедитесь, что у вас нет открытых файлов, папок или рабочих пространств.

  3. Перейдите в меню Файл | Сохранить рабочее пространство как.....

  4. В диалоговом окне перейдите на диск C: в Windows, в папку пользователя в macOS (моя папка называется markjprice) или любой другой каталог или диск, в котором вы хотите сохранить свои проекты.

  5. Нажмите кнопку Новая папка и назовите папку cs11dotnet7. (Если вы выполнили раздел для Visual Studio 2022, то эта папка уже существует).

  6. В папке cs11dotnet7 создайте новую папку с именем Chapter01-vscode.

  7. В папке Chapter01-vscode сохраните рабочую область под именем Chapter01.code-workspace.

  8. Выберите Файл | Добавить папку в рабочую область... или нажмите кнопку Добавить папку.

  9. В папке Chapter01-vscode создайте новую папку с именем HelloCS.

  10. Выберите папку HelloCS и нажмите кнопку Добавить.

  11. Когда появится диалоговое окно с вопросом, доверяете ли вы авторам файлов в этой папке, нажмите Да, как показано на рисунке 1.9. как показано на рисунке 1.9:

  1. В строке меню обратите внимание на синюю полосу с надписью Restricted Mode (Ограниченный режим) и нажмите Manage (Управление).

  2. Во вкладке Доверие рабочего пространства нажмите кнопку Доверие, как показано на рисунке 1.10:

  1. Закройте вкладку Проверка рабочей области.

  2. Перейдите в меню Вид | Терминал.

  3. В TERMINAL убедитесь, что вы находитесь в папке HelloCS, а затем используйте dotnet CLI, чтобы создайте новое консольное приложение, как показано в следующей команде:

  4. Вы увидите, что инструмент командной строки dotnet создает новый проект Console App для вас в текущей папке, а в окне EXPLORER отображаются два созданных файла, HelloCS.csproj и Program.cs, а также папку obj, как показано на рисунке 1.11:

  1. В EXPLORER щелкните на файле с именем Program.cs, чтобы открыть его в окне редактора. В первый Visual Studio Code, возможно, придется загрузить и установить зависимости C#. Такие как OmniSharp, .NET Core Debugger, и Razor Language Server, если он не сделал этого, когда вы установили расширение C#, или если они нуждаются в обновлении. Visual Studio Code покажет прогресс в окне Output и в конечном итоге сообщение Finished, как показано в следующем выводе:

Предшествующий вывод сделан в Visual Studio Code под Windows. При запуске на macOS или Linux, результат будет выглядеть несколько иначе, но эквивалентные компоненты для вашей операционной системы будут загружены и установлены. 19. Будут созданы папки с именами obj и bin, и когда вы увидите уведомление о том, что необходимые активы отсутствуют, нажмите Да, как показано на рисунке 1.12:

Last updated