0

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

我的第一个想法是实现IVsProjectFactoryIVsProjectUpgradeViaFactory以在CreateProject / 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 打开文件。此外,打开文件时显示的对话框标题为“打开文件”而不是“打开解决方案”或类似名称。

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

4

1 回答 1

0

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

于 2018-06-18T16:00:32.717 回答