Упаковка .exe в .vsix и вызов из расширения Visual Studio

У меня есть пакет Visual Studio, который выполняет часть своей работы, запуская внешний процесс (используя System.Diagnostics.Process) и взаимодействуя с ним через стандартный ввод/вывод. В настоящее время у меня жестко закодирован путь к .exe, что, очевидно, не подходит для фактического развертывания расширения. Как правильно упаковать и распространить .exe вместе с расширением? (И, соответственно, как мне программно определить путь к установленному файлу .exe). Предпочтительно я хотел бы поместить его в файл .vsix, чтобы установка была простой.

EDIT: Я разместил соответствующую часть моего кода на BitBucket (это может быть полезно кому-то еще, кто использует Roslyn): roslyn_process, чтобы дать лучшее представление о том, что я пытаюсь сделать. Этот код устанавливает связь между расширением Visual Studio, использующим реализацию AbstractProcessHandler и отдельным процессом, использующим RoslynProcess. Последний информируется о модификациях файлов кода в Visual Studio и о том, какой файл кода просматривается, поэтому он может выполнять анализ с актуальной информацией, несмотря на то, что не работает как расширение Visual Studio, которое накладывало бы ограничения Roslyn на весь редактируемый код.

EDIT 2: Используя этот ответ, я могу получить каталог расширения. Я могу включить другой пакет в source.extension.vsixmanifest, добавив его в список содержимого как тип "Custom Extension Type". Тогда в каталоге расширения появляется .exe. Кажется, что это правильное решение, хотя способ получения каталога отмечен в MSDN как то, что я не должен использовать.

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

7
задан Community 23 May 2017 в 12:00
поделиться