Читающие мой блог уже знают, что я хорошо отношусь к командной строке, использую в своей работе как 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.
Сайт запущен, и если в браузере загрузить страницу localhost:5000, то вы должны загрузить только что созданный сайт.
Все ошибки и вся информация об обращениях к сайту будет отображаться в консоли. Она будет выполнять роль журнала. Чтобы остановить сайт, нажимаем Ctrl+C.