Как обрабатывать загрузку файлов определенного типа в расширении 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 для любого типа файла будет пытаться открыть его с помощью приложения по умолчанию.