Как обрабатывать загрузку файлов определенного типа в расширении Visual Studio

У меня есть решение Visual Studio внутри zip-файла, и я планирую распаковать этот файл, а затем загрузить решение. Возможно ли это сделать с помощью Visual Studio API?

Моей первой мыслью было реализовать IVsProjectFactory и IVsProjectUpgradeViaFactory, чтобы разархивировать решение в методе CreateProject / UpgradeProject и затем загрузить его.

Разархивирование работает, но когда я пытаюсь загрузить файл решения с помощью IVsSolution.OpenSolutionFile() или DTE.Solution.Open () (внутри метода CreateProject/UpgradeProject), происходит сбой с ArgumentException.

Есть ли решение этой проблемы? В идеале, он должен вести себя так же, как при открытии обычного решения VS (открытие из проводника Windows или Ctrl+o/Ctrl+Shift+o в Visual Studio).

Редактировать Мне удалось заставить его работать, реализовав IVsEditorFactory, который связан с моим расширением файла. Когда файл с таким расширением открывается, вызывается метод CreateEditorInstance, где я распаковываю файл и открываю решение с помощью IVsSolution.OpenSolutionFile().

К сожалению, это не позволяет мне открыть файл через Файл-> Открыть-> Проект / Решение, но только через Файл-> Открыть-> Файл. Кроме того, диалоговое окно, которое появляется при открытии файла, называется "Открытие файла", а не "открытие решения" или что-то в этом роде.

Это решение похоже на взлом, но до сих пор я не мог найти другой путь. Я все еще открыт для лучших решений.

1 ответ

Должна быть возможность написать пакетный скрипт, чтобы распаковать решение. После этого он может запустить solution_name. Это должно запустить MSVS на этом решении. В общем случае при запуске START для любого типа файла будет пытаться открыть его с помощью приложения по умолчанию.

Другие вопросы по тегам