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

## Настройка Visual Studio <a href="#setting-up-visual-studio" id="setting-up-visual-studio"></a>

Запустите Visual Studio Installer.&#x20;

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2Fgvyca2V8OnO8YESQGW6T%2F01.webp?alt=media&#x26;token=290fdf39-ad71-4af0-801c-a16e1e98e858" alt=""><figcaption></figcaption></figure>

По кнопке "Изменить" откроется окно установки компонент среды разработки:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FK5YZYfG04IzBRpbzVs6H%2F02.png?alt=media&#x26;token=11a03377-a380-4a50-8a64-d594b39a8093" alt=""><figcaption></figcaption></figure>

На вкладке "Рабочие нагрузки" поставьте галочку на компоненте **ASP.NET и разработка веб-приложений** и нажмите кнопку "Изменить".

## Создание проекта <a href="#create-new-project" id="create-new-project"></a>

В папке **\Template\Projects\1. Template** создадим папку **Engine**, в которой будут храниться исходники кастомных объектов для серверной части.

Запустим Visual Studio 2022.

На начальной странице выберем пункт **Create a new project** (Создать проект):

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FcUPYAwraoWL7brHRq4YP%2F03.png?alt=media&#x26;token=4b4297f2-41f0-4a50-bb89-7cbca470a4fe" alt=""><figcaption></figcaption></figure>

Если среда разработки Visual Studio уже открыта, то проект можно создать, выбрав пункт **File -> New -> Project...** в строке меню. А также нажав кнопку **New Project** на панели инструментов, или нажав комбинацию клавиш **Ctrl+Shift+N**.

![](https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2F11qWkKPdllSpvLDtHHcc%2F00.png?alt=media\&token=c45555d3-677f-4316-8f35-62be294c2cd7)

На странице **Create a new project** введите в поле поиска **library**.  Так как платформа написана на платформе **.NET Core**, то нам необходимо выбрать соответствующий тип приложения:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FZEPdWvI62VSFrwE6WDCu%2F05.png?alt=media&#x26;token=9c87c502-70a0-4280-b048-8a38ffe34d3e" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Если вы не видите шаблоны .NET, вероятно, у вас не установлена требуемая рабочая нагрузка. В сообщении **Not finding what you're looking for?** (Не удается найти то, что ищете?) выберите ссылку **Install more tools and features** (Установка других средств и компонентов). Откроется  Visual Studio Installer. Убедитесь, что у вас установлена рабочая нагрузка **ASP.NET и разработка веб-приложений**.
{% endhint %}

В диалоговом окне **Configure your new project** (Настройка нового проекта) доступны параметры, позволяющие присвоить имя проекту (и решению), выбрать расположение на диск&#x435;**:**

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2F5mWzGqcVzpuCaOIzIHcy%2F03.png?alt=media&#x26;token=d3dc7c34-536c-485d-9265-2ca6591c28b9" alt=""><figcaption></figcaption></figure>

В поле **Project name** укажем имя нашего проекта - **Template**. В поле **Location** - ранее созданную папку Objects.

Галочку **Place solution and project in the same directory** можно снять.

В диалоговом окне **Additional information** (Дополнительные сведения) содержится параметр для выбора версии платформы:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FYAb3rpE1uhwNnyN8UAii%2F07.png?alt=media&#x26;token=558f85a1-d3a8-4209-917d-91709b05d062" alt=""><figcaption></figcaption></figure>

Оставим здесь **.NET Core 3.1 (Out of support)** и нажмем на кнопку Create.

## Сборка проекта <a href="#building-project" id="building-project"></a>

Откроем свойства проекта, вызвав контекстное меню и выбрав пункт **Properties**. Или нажав комбинацию клавиш **Alt+Enter**.

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FQAUqxC5yJl1uYciA2VzP%2Fimage.png?alt=media&#x26;token=b99b520b-3a8a-405f-bbf1-d4dd9aac58c3" alt=""><figcaption></figcaption></figure>

На вкладке **Build->Events** необходимо прописать команду, которая будет выполняться после сборки решения:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FNx1RiHFCjKMGxEvBOREL%2F04.webp?alt=media&#x26;token=a42d4958-4a48-45b5-9edc-91efa46ea378" alt=""><figcaption></figcaption></figure>

В поле **Post-build event command line** пропишем команду копирования собранного dll-файла из папки проекта в папку, в которую установили серверную часть:

```
copy "$(ProjectDir)$(OutDir)$(TargetName).dll" "D:\WorkflowEngine\Template"
```

По умолчанию Visual Studio собирает проект в папку:

\Template\Projects\1. Template\Engine\TemplateEngine\TemplateEngine\bin\Debug\netcoreapp3.1

Давайте пересоберем проект, для этого в контекстном меню выберем пункт **Build** или **Rebuild**:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2F3URAtnD0iKymrD8QTRSF%2F05.png?alt=media&#x26;token=29a24b25-c0d8-480a-8fcb-47f3bdf7cdc6" alt=""><figcaption></figcaption></figure>

Проверьте, что файл TemplateEngine.dll скопировался в папку с установленной серверной частью.

## Отладка проекта <a href="#debug" id="debug"></a>

Чтобы запускать приложение напрямую из Visual Studio, сделаем настройки режима отладки. Для этого откроем свойства проекта и перейдем на вкладку **Debug**:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FH8UsfWLbM5z6mh84VWDl%2Fimage.png?alt=media&#x26;token=9e6fd127-4509-4053-b02f-f2c52523d65e" alt=""><figcaption></figcaption></figure>

Кликнем по тексту **Open debug launch profiles UI**. В открывшемся окне профилей запуска кликнем по кнопке **Create a new profile**. В меню выберем пункт **Executable**:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2F1qfktZiggm9UrzkF2mI2%2F13.webp?alt=media&#x26;token=77ac1d04-7034-4a24-a67e-1805a4dc99ae" alt=""><figcaption></figcaption></figure>

Новый профиль сразу переименуем, кликнув по кнопке **Rename selected profile**:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FrYxYnGuGtz8hvuHFDny2%2F14.webp?alt=media&#x26;token=188dfdaa-0ca4-4b02-96e6-a651dde39bb3" alt=""><figcaption></figcaption></figure>

В профиле укажем следующие настройки:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2F8w2NAgpD6qLrakcDzdSU%2F06.png?alt=media&#x26;token=466ab52c-3155-4594-a95c-7c96d4fba5d6" alt=""><figcaption></figcaption></figure>

В поле **Executable** прописываем путь до exe-файла самого web-приложения, размещенного в папке развернутого сервера. В поле **Command line argument** прописываем `--console` аналогично аргументу из файла \_start.bat, который используем для запуска серверной части. А в поле **Working directory** укажем путь до папки, в которой развернут сервер учебного проекта.

Теперь мы можем запустить приложение, нажав клавишу **F5** или кнопку на панели инструментов:

![](https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FjGiJGsICkBVKE5XUKpaE%2F07.png?alt=media\&token=73963088-326f-462a-8077-86d0d6b6f3df)

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

В проекте появился новый файл **launchSettings.json**, в котором будут храниться настройки профилей запуска приложения:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FKKpZ0ekgtrf6TJJc3frl%2F08.png?alt=media&#x26;token=8f8d7f9c-c380-47ed-8081-4bfda4531ba2" alt=""><figcaption></figcaption></figure>
