9.3 KiB
Сборка и подключение BulkArchiveMailer
Это решение написано и ни разу не собрано в среде без Windows/Visual
Studio/.NET SDK — весь код написан вручную по памяти о реальных
VSTO/Outlook Interop API, но первая сборка обязательно должна пройти на
вашей машине, прежде чем этому плагину можно будет доверять. Ниже —
пошаговая инструкция и список мест, где по опыту чаще всего что-то не
сходится при первом открытии вручную написанного .csproj.
Требования
- Windows 10/11.
- Классический Outlook (Win32 или Microsoft 365 C2R) — не "новый Outlook" (он не поддерживает VSTO).
- Visual Studio 2022 (Community — бесплатная) с установленным workload'ом
".NET desktop development" И "Office/SharePoint development"
(последний ставит шаблоны VSTO, VSTO Runtime и Office Developer Tools —
без него сборка
BulkArchiveMailer.AddInне найдётMicrosoft.Office.Tools.*сборки). - Установленный VSTO Runtime (обычно ставится вместе с Office/SharePoint workload'ом; если Outlook жалуется на "not a valid Office Add-in" при загрузке — скорее всего он не установлен отдельно, доустановите "Microsoft Visual Studio 2010 Tools for Office Runtime" / актуальную версию VSTO Runtime).
Открытие и сборка
- Откройте
BulkArchiveMailer.slnв Visual Studio. - Дайте NuGet восстановить пакеты (
BulkArchiveMailer.Core.Testsтянет xUnit +Microsoft.NET.Test.Sdk;BulkArchiveMailer.CoreиBulkArchiveMailer.AddInNuGet-пакетов не используют вовсе — это осознанное решение, см.AppSettings.cs, чтобы не зависеть от восстановления пакетов в непроверенной среде). - Соберите решение (Build → Build Solution). Скорее всего первая сборка пройдёт чисто, но если нет — см. раздел "Типичные проблемы" ниже.
BulkArchiveMailer.Core.Testsможно запустить через Test Explorer — там сейчас один smoke-тест (FilenameParserTests), подтверждающий, что тестовый проект в принципе собирается и видитCore. Полное покрытие тестами — отдельная задача (dotnet-tester), не часть этой сборки.
Отладка (F5)
Проект BulkArchiveMailer.AddIn настроен как VSTO Outlook Add-in — при
нажатии F5 (с ним как стартовым проектом) Visual Studio должна сама
зарегистрировать временную запись в реестре и запустить Outlook с уже
загруженным плагином. Если Outlook уже был открыт — закройте его перед F5.
Кнопка ленты "Массовая рассылка" появляется на вкладке "Главная" основного окна Outlook (список писем), в группе "ssh-access-tui".
Установка вне Visual Studio (ручной sideload)
Это внутренний инструмент, поэтому здесь используется sideload через реестр, а не полноценная публикация ClickOnce с веб-сервером или раскатка через GPO (это отдельная задача на будущее, если понадобится массово ставить плагин большому числу операторов).
-
Соберите решение в конфигурации Release (Build → Configuration Manager → Release, затем Build Solution).
-
В
BulkArchiveMailer.AddIn\bin\Release\после сборки появятся, среди прочего,BulkArchiveMailer.AddIn.dllиBulkArchiveMailer.AddIn.vsto(манифест генерируется автоматически MSBuild-таргетами VSTO — в исходниках его нет и не должно быть,.gitignoreего игнорирует). -
Скопируйте всю папку
bin\Release\в постоянное место на диске оператора (например,C:\Tools\BulkArchiveMailer\) — VSTO plug-in должен запускаться из стабильного пути, а не из папки сборки, которая может быть пересобрана/удалена. -
Добавьте ключ реестра, которым Outlook находит плагин:
[HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\BulkArchiveMailer.AddIn] "Description"="Массовая рассылка архивов ssh-access-tui" "FriendlyName"="BulkArchiveMailer" "Manifest"="file:///C:\\Tools\\BulkArchiveMailer\\BulkArchiveMailer.AddIn.vsto|vstolocal" "LoadBehavior"=dword:00000003(можно сохранить как
.reg-файл и применить двойным щелчком). -
Запустите Outlook. Поскольку манифест не подписан сертификатом (
SignManifests=falseв.csproj— см. комментарий там же о причине), при первой загрузке Outlook, скорее всего, покажет предупреждение "не удалось проверить издателя" или подобное. Варианты:- принять предупреждение вручную (для одного оператора это разумно);
- добавить папку с плагином в доверенные расположения для VSTO:
HKEY_CURRENT_USER\Software\Microsoft\VSTO\Security\Trust Manager\TrustedFolders\<любой уникальный ключ>= путь к папке с.vsto,StringREG_SZ. - для более широкой раскатки — подписать манифест сертификатом (Project Properties → Signing в Visual Studio) и настроить доверие централизованно (GPO/сертификат в доверенных издателях) — это уже упомянутое будущее развитие, не сделано в этой версии.
Типичные проблемы при первом открытии
Поскольку .csproj/.sln в этом решении написаны вручную (без мастера
Visual Studio, из-за отсутствия здесь Windows/VS/.NET SDK для
генерации), возможны мелкие расхождения с тем, что сгенерировал бы
реальный мастер "Outlook VSTO Add-in". Если сборка BulkArchiveMailer.AddIn
падает на ссылках Microsoft.Office.*/Microsoft.VisualStudio.Tools.*:
- Проверьте, что workload "Office/SharePoint development" точно установлен (Visual Studio Installer → Modify).
- Если конкретная ссылка подсвечена жёлтым в Solution Explorer — правой
кнопкой на неё → Properties → сверьте путь; как правило, достаточно
удалить и заново добавить через Add Reference → Assemblies →
Extensions, найдя те же имена (
Microsoft.Office.Tools.Outlookи т.д.) — они должны там появиться, если workload установлен. - Если
Microsoft.Office.Interop.Outlook/officeне резолвятся с версией15.0.0.0— это нормально расходится в зависимости от того, какая версия Office PIA установлена; сменитеVersion=в ссылке (в.csproj, ищитеMicrosoft.Office.Interop.Outlook/office) на установленную (14.0.0.0для Office 2010 PIA и т.п.) либо просто удалите атрибут версии в Solution Explorer и добавьте заново через Add Reference — Visual Studio подставит то, что реально стоит на машине. - TargetFrameworkVersion
v4.8требует установленного .NET Framework 4.8 Developer Pack — Visual Studio предложит установить его сама при открытии, если его нет.
Ничего из перечисленного не проверялось вживую — список составлен по опыту работы с VSTO-проектами в целом, а не по факту увиденной ошибки в этом конкретном решении.