Открыв окно интерфейса CLI, введите следующие команды, чтобы создать новое решение, проекты для библиотек классов и консольного приложения, а также ссылки на проекты:
dotnet new sln -n Chapter17_ExtendableApp
dotnet new classlib -lang c# -n CommonSnappableTypes
При компиляции проекта (либо в Visual Studio, либо в командной строке) существуют события, к которым можно привязываться. Например, после каждой успешной компиляции нужно копировать две сборки оснасток в каталог проекта консольного приложения (в случае отладки посредством
dotnet run
) и в выходной каталог консольного приложения (при отладке в Visual Studio). Для этого будут использоваться несколько встроенных макросов.
Вставьте в файлы
CSharpSnapin.csproj
и
VBSnapIn.vbproj
приведенный ниже блок разметки, который копирует скомпилированную сборку в каталог проекта
Теперь после компиляции каждого проекта его сборка копируется также в целевой каталог приложения
MyExtendableApp
.
Создание решения и проектов с помощью Visual Studio
Вспомните, что по умолчанию среда Visual Studio назначает решению такое же имя, как у первого проекта, созданного в этом решении. Тем не менее, вы можете легко изменять имя решения.
Чтобы создать решение
ExtendableApp
, выберите в меню пункт File?New Project (Файл?Создать проект). В открывшемся диалоговом окне Add New Project (Добавление нового проекта) выберите элемент Class Library (Библиотека классов) и введите
CommonSnappableTypes
в поле Project name (Имя проекта). Прежде чем щелкать на кнопке Create (Создать), введите
ExtendableApp
в поле Solution name (Имя
решения), как показано на рис. 17.3.
Чтобы добавить к решению еще один проект, щелкните правой кнопкой мыши на имени решения(
ExtendableApp
) в окне Solution Explorer и выберите в контекстном меню пункт Add?New Project (Добавить? Новый проект) или выберите в меню пункт File?Add?New Project (Файл?Добавить?Новый проект). При добавлении дополнительного проекта к существующему решению содержимое диалогового окна Add New Project слегка отличается; параметры решения теперь отсутствуют, так что вы увидите только информацию о проекте (имя и местоположение). Назначьте проекту библиотеки классов имя
CSharpSnapIn
и щелкните на кнопке Create.
Далее добавьте в проект
CSharpSnapIn
ссылку на проект
CommonSnappableTypes
. В среде Visual Studio щелкните правой кнопкой мыши на имени проекта
CSharpSnapIn
и выберите в контекстном меню пункт Add?Project Reference (Добавить?Ссылка на проект). В открывшемся диалоговом окне Reference Manager (Диспетчер ссылок) выберите элемент Projects?Solution (Проекты?Решение) в левой части (если он еще не выбран) и отметьте флажок рядом с
CommonSnappableTypes
.
Повторите процесс для нового проекта библиотеки классов Visual Basic (VBSnapIn), которая ссылается на проект
CommonSnappableTypes
.
Наконец, добавьте к решению новый проект консольного приложения .NET Core по имени
MyExtendableApp
. Добавьте в него ссылку на проект
CommonSnappableTypes
и установите проект консольного приложения в качестве стартового для решения. Для этого щелкните правой кнопкой мыши на имени проекта
MyExtendableApp
в окне Solution Explorer и выберите в контекстном меню пункт Set as Startup Project (Установить как стартовый проект).
На заметку! Если вы щелкнете правой кнопкой мыши на имени решения
ExtendableApp
, а не на имени одного из проектов, то в контекстном меню отобразится пункт Set Startup Projects (Установить стартовые проекты). Помимо запуска по щелчку на кнопке Run (Запустить) только одного проекта можно настроить запуск множества проектов, что будет демонстрироваться позже в книге.
Установка зависимостей проектов при компиляции
Когда среде Visual Studio поступает команда запустить решение, стартовый проект и все проекты, на которые имеются ссылки, компилируются в случае обнаружения любых изменений; однако проекты, ссылки на которые отсутствуют, не компилируются. Положение дел можно изменить, устанавливая зависимости проектов. Для этого щелкните правой кнопкой мыши на имени решения в окне Solution Explorer, выберите в контекстном меню пункт Project Build Order (Порядок компиляции проектов), в открывшемся диалоговом окне перейдите на вкладку Dependencies (Зависимости) и в раскрывающемся списке Projects (Проекты) выберите