我在 zip 文件中有一个 Visual Studio 解决方案,我的计划是解压缩该文件,然后加载该解决方案。是否可以使用 Visual Studio API 执行此操作?
我的第一个想法是实现IVsProjectFactory和IVsProjectUpgradeViaFactory以在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 打开文件。此外,打开文件时显示的对话框标题为“打开文件”而不是“打开解决方案”或类似名称。
这个解决方案感觉有点像黑客,但直到现在我找不到另一种方法。我仍然愿意寻求更好的解决方案。