Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!
Шрифт:
Интервал:
Закладка:
• MyExtendableApp.ехе. Консольное приложение, которое может быть расширено функциональностью каждой оснастки.
В приложении будут использоваться динамическая загрузка, рефлексия и позднее связывание для динамического получения функциональности сборок, о которых заранее ничего не известно.
На заметку! Вы можете подумать о том, что вам вряд ли будет ставиться задача построения консольного приложения, и тут вы вероятно правы! Бизнес-приложения, создаваемые на языке С#, обычно относятся к категории интеллектуальных клиентов (Windows Forms или WPF), веб-приложений/служб REST (ASP.NET Core) или автоматических процессов (функций Azure, служб Windows и т.д.). Консольные приложения применяются здесь, чтобы сосредоточиться на специфических концепциях примеров, в данном случае — на динамической загрузке, рефлексии и позднем связывании. Позже в книге вы узнаете, как строить "реальные" пользовательские приложения с использованием WPF и ASP.NET Core.
Построение мультипроектного решения ExtendableApp
Большинство приложений, созданных ранее в книге, были автономными проектами с небольшими исключениями (вроде предыдущего приложения). Так делалось для того, чтобы сохранять примеры простыми и четко ориентированными на демонстрируемые в них аспекты. Однако в реальном процессе разработки обычно приходится работать с множеством проектов в одном решении.
Создание решения и проектов с помощью интерфейса командной строки
Открыв окно интерфейса CLI, введите следующие команды, чтобы создать новое решение, проекты для библиотек классов и консольного приложения, а также ссылки на проекты:
dotnet new sln -n Chapter17_ExtendableApp
dotnet new classlib -lang c# -n CommonSnappableTypes
-o .CommonSnappableTypes -f net5.0
dotnet sln .Chapter17_ExtendableApp.sln add .CommonSnappableTypes
dotnet new classlib -lang c# -n CSharpSnapIn -o .CSharpSnapIn -f net5.0
dotnet sln .Chapter17_ExtendableApp.sln add .CSharpSnapIn
dotnet add CSharpSnapin reference CommonSnappableTypes
dotnet new classlib -lang vb -n VBSnapIn -o .VBSnapIn -f net5.0
dotnet sln .Chapter17_ExtendableApp.sln add .VBSnapIn
dotnet add VBSnapIn reference CommonSnappableTypes
dotnet new console -lang c# -n MyExtendableApp -o .MyExtendableApp -f net5.0
dotnet sln .Chapter17_ExtendableApp.sln add .MyExtendableApp
dotnet add MyExtendableApp reference CommonSnappableTypes
Добавление событий PostBuild в файлы проектов
При компиляции проекта (либо в Visual Studio, либо в командной строке) существуют события, к которым можно привязываться. Например, после каждой успешной компиляции нужно копировать две сборки оснасток в каталог проекта консольного приложения (в случае отладки посредством dotnet run) и в выходной каталог консольного приложения (при отладке в Visual Studio). Для этого будут использоваться несколько встроенных макросов.
Вставьте в файлы CSharpSnapin.csproj и VBSnapIn.vbproj приведенный ниже блок разметки, который копирует скомпилированную сборку в каталог проекта MyExtendableApp и в выходной каталог(MyExtendableAppbindebugnet5.0):
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy $(TargetPath) $(SolutionDir)MyExtendableApp
$(OutDir)$(TargetFileName)
/Y 
copy $(TargetPath) $(SolutionDir)MyExtendableApp
$(TargetFileName) /Y" />
</Target>
Теперь после компиляции каждого проекта его сборка копируется также в целевой каталог приложения 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 (Проекты) выберите MyExtendableApp.
Обратите внимание, что проект CommonSnappableTypes уже выбран и связанный с ним флажок отключен. Причина в том, что на него производится ссылка напрямую. Отметьте также флажки для проектов CSharpSnapIn и VBSnapIn (рис. 17.4).

Теперь при каждой компиляции проекта MyExtendableApp будут также компилироваться проекты
Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.
Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.
- 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
- 2. Просьба отказаться от оскорблений, угроз и запугиваний.
- 3. Просьба отказаться от нецензурной лексики.
- 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.
Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.
Оставить комментарий
-
Гость Татьяна24 сентябрь 22:20 Как то не очень... Невеста по ошибке. Я не дам тебе развод - Майя Линн
-
Римма24 сентябрь 21:52 Почему главные героинитпкие идиотки? И сюжет не плохой, и написано хорошо. Но как героиня - так дура дурой.... Хозяйка маленького дома, или Любимая для дракона - Кира Рамис
-
Римма20 сентябрь 12:27 Много ненужных пояснений и отступлений. Весь сюжет теряет свою привлекательность. Героиня иногда так тупит, что читать не... Хозяйка приюта для перевертышей и полукровок - Елена Кутукова