如何在Visual Studio扩展中处理特定文件类型的加载

时间:2018-06-15 09:51:21

标签: visual-studio-2015 visual-studio-2017 vsix vs-extensibility vssdk

我在zip文件中有一个Visual Studio解决方案,我的计划是解压缩该文件,然后加载解决方案。是否可以使用Visual Studio API执行此操作?

我的第一个想法是实施IVsProjectFactoryIVsProjectUpgradeViaFactoryCreateProject / UpgradeProject方法解压缩解决方案,然后加载它。

解压缩有效,但是当我尝试使用IVsSolution.OpenSolutionFile()DTE.Solution.Open()(在CreateProject / UpgradeProject方法内)加载解决方案文件时,它会因ArgumentException而失败。

这个问题有解决办法吗?理想情况下,它应该像打开正常的VS解决方案一样(从Windows资源管理器打开,或者在Visual Studio中按Ctrl + o / Ctrl + Shift + o)。

修改 我已经设法通过实现与我的文件扩展名相关联的IVsEditorFactory来实现它。当打开具有该扩展名的文件时,将调用CreateEditorInstance方法,然后解压缩该文件,然后使用IVsSolution.OpenSolutionFile()打开解决方案。

不幸的是,这不允许我通过File-> Open-> Project / Solution打开文件,但只能通过File-> Open-> File。此外,打开文件时显示的对话框标题为“打开文件”,而不是“打开解决方案”或类似的内容。

这个解决方案感觉有点像黑客,但直到现在我找不到另一种方式。我仍然愿意接受更好的解决方案。

1 个答案:

答案 0 :(得分:0)

应该可以编写批处理脚本来解压缩解决方案。 之后它可以启动solution_name 。应该在该解决方案上启动MSVS。通常,对任何文件类型发出START都会尝试使用默认应用程序打开它。