1.2. Работа в командной строке

Читающие мой блог уже знают, что я хорошо отношусь к командной строке, использую в своей работе как Linux, так и Мак, и умею и иногда пишу код не в Visual Studio. Для таких как я Microsoft выпустила очень легкий и быстрый редактор кода Visual Studio Code – где главным является именно код.

Когда VS Code только выпустили, то для всех стало вопросом, а как создавать проекты? Этот редактор не предназначен для этого и в нем такую фишку не стали реализовывать, хотя не исключаю, если сделают это.

Решение простое – использовать командную строку. На любой платформе есть свои терминалоподобные приложения, в которых можно работать с.NET. Для этого MS предоставили нам Command Line Interface (CLI).

Запустите терминал и выполните команду dotnet. В результате вы должны увидеть что-то типа:

Mikhails-MacBook-Pro:~ mikhailflenov$ dotnet

Usage: dotnet [options]
Usage: dotnet [path-to-application]

Options:
  -h|--help         Display help.
  --info            Display .NET Core information.
  --list-sdks       Display the installed SDKs.
  --list-runtimes   Display the installed runtimes.

path-to-application:
  The path to an application .dll file to execute.

.NET Core сейчас развивается достаточно динамично, поэтому возможно вы захотите узнать, какая версия у вас установлена и для этого выполняем команду:

dotnet --version
2.1.302

Как видите у меня установлена версия 2.1.302

У dotnet достаточно много возможностей и я не помню их все. Чтобы найти нужные параметры можно пользоваться интернетом, а если знаете английский то можно выполнить команду dotnet --help

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

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

mkdir TestProject
cd TestProject

Теперь попробуем выполнить создать новый проект и согласно информации, которую я увидел после выполнения команды dotnet –help, я должен выполнить команду:

dotnet new

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

Getting ready...
Usage: new [options]

Options:
  -h, --help          Displays help for this command.
  -l, --list          Lists templates containing the specified name. If no name is specified, lists all templates.
  -n, --name          The name for the output being created. If no name is specified, the name of the current directory is used.
  -o, --output        Location to place the generated output.
  -i, --install       Installs a source or a template pack.
  -u, --uninstall     Uninstalls a source or a template pack.
  --nuget-source      Specifies a NuGet source to use during install.
  --type              Filters templates based on available types. Predefined values are "project", "item" or "other".
  --force             Forces content to be generated even if it would change existing files.
  -lang, --language   Filters templates based on language and specifies the language of the template to create.


Templates                                         Short Name         Language          Tags                                 
----------------------------------------------------------------------------------------------------------------------------
Console Application                               console            [C#], F#, VB      Common/Console                       
Class library                                     classlib           [C#], F#, VB      Common/Library                       
Unit Test Project                                 mstest             [C#], F#, VB      Test/MSTest                          
xUnit Test Project                                xunit              [C#], F#, VB      Test/xUnit                           
Razor Page                                        page               [C#]              Web/ASP.NET                          
MVC ViewImports                                   viewimports        [C#]              Web/ASP.NET                          
MVC ViewStart                                     viewstart          [C#]              Web/ASP.NET                          
ASP.NET Core Empty                                web                [C#], F#          Web/Empty                            
ASP.NET Core Web App (Model-View-Controller)      mvc                [C#], F#          Web/MVC                              
ASP.NET Core Web App                              razor              [C#]              Web/MVC/Razor Pages                  
ASP.NET Core with Angular                         angular            [C#]              Web/MVC/SPA                          
ASP.NET Core with React.js                        react              [C#]              Web/MVC/SPA                          
ASP.NET Core with React.js and Redux              reactredux         [C#]              Web/MVC/SPA                          
Razor Class Library                               razorclasslib      [C#]              Web/Razor/Library/Razor Class Library
ASP.NET Core Web API                              webapi             [C#], F#          Web/WebAPI                           
global.json file                                  globaljson                           Config                               
NuGet Config                                      nugetconfig                          Config                               
Web Config                                        webconfig                            Config                               
Solution File                                     sln                                  Solution                             

Examples:
    dotnet new mvc --auth Individual
    dotnet new viewstart
    dotnet new --help 

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

Посмотрим на первую строку таблицы доступных проектов:

Console Application    console  [C#], F#, VB      Common/Console

Здесь у нас четыре колонки:

Console Application – полное имя шаблона

console – короткое имя шаблона, которое можно указать команде создания проектов

[C#], F#, VB - поддерживаемые языки. В квадратных скобках указан язык по умолчанию. Если вы не укажите команде создания проекта язык явно, то будет именно C#. Если нужен VB, то его придется указывать явно.

Tags – просто тэги удобные для поиска

Мы создаем пустое web приложение и его короткое имя web, так что выполняем команду:

dotnet new web

Язык не указан, а значит будет C#. Если вы посмотрите на таблицу доступных шаблонов, то он установлен по умолчанию для всех проектов.

В результате выполнения команды вы в консоли должны увидеть что-то типа:

The template "ASP.NET Core Empty" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on /Users/mikhailflenov/TestProject/TestProject.csproj...
  Restoring packages for /Users/mikhailflenov/TestProject/TestProject.csproj...
  Generating MSBuild file /Users/mikhailflenov/TestProject/obj/TestProject.csproj.nuget.g.props.
  Generating MSBuild file /Users/mikhailflenov/TestProject/obj/TestProject.csproj.nuget.g.targets.
  Restore completed in 2.33 sec for /Users/mikhailflenov/TestProject/TestProject.csproj.

Restore succeeded.

Обратите внимание, что тип проекта не указан, а dotnet стала использовать имя директории, в которой мы сейчас находимся. Посмотрим, какие файлы для нас сгенерировал VS:

ls -al
total 24
drwxr-xr-x   8 mikhailflenov  staff   256 21 Sep 08:49 .
drwxr-xr-x+ 51 mikhailflenov  staff  1632 21 Sep 08:17 ..
-rw-r--r--   1 mikhailflenov  staff   633 21 Sep 08:49 Program.cs
drwxr-xr-x   3 mikhailflenov  staff    96 21 Sep 08:49 Properties
-rw-r--r--   1 mikhailflenov  staff  1121 21 Sep 08:49 Startup.cs
-rw-r--r--   1 mikhailflenov  staff   310 21 Sep 08:49 TestProject.csproj
drwxr-xr-x   6 mikhailflenov  staff   192 21 Sep 08:49 obj
drwxr-xr-x   2 mikhailflenov  staff    64 21 Sep 08:49 wwwroot

В прошлой главе я кажется уже использовал команду запуска сайта из командной строки, но попробуем сделать это еще раз:

dotnet run

В результате в командной строке вы увидите что-то типа:

Using launch settings from /Users/mikhailflenov/TestProject/Properties/launchSettings.json...
Hosting environment: Development
Content root path: /Users/mikhailflenov/TestProject
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

Запуск .net core приложения из консоли

Сайт запущен, и если в браузере загрузить страницу localhost:5000, то вы должны загрузить только что созданный сайт.

Все ошибки и вся информация об обращениях к сайту будет отображаться в консоли. Она будет выполнять роль журнала. Чтобы остановить сайт, нажимаем Ctrl+C.

.NET Core приложение в браузере

Предыдущая глава

1.1. Создание первого проекта

Следующая глава

1.3. Работа с конфигурацией

О блоге

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

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне