首页 > 解决方案 > 如何获取在 Visual Studio 中打开的当前解决方案的路径?

问题描述

我创建了一个工具窗口作为 VSIX 项目的一部分,并安装了一个扩展来测试它。因此,工具窗口需要访问在 Visual Studio 中打开的当前解决方案/项目。当用户第一次创建项目时,我们可以使用如下所述的 DTE 对象获取路径,我尝试了它们,它工作正常,

加载项如何检测加载解决方案的时间?

在 vsix 项目中访问当前打开的解决方案

但是下次当用户双击解决方案时如何获取当前的解决方案路径?现在,当用户打开 .sln 文件时,工具窗口会中断,因为它无法找到打开的解决方案路径。

标签: visual-studio-2019visual-studio-extensionsvsixproject-templatecustomtool

解决方案


当用户双击并打开解决方案时,我们手头没有DTE对象,我们需要一种不同的方式来获取 solutionInfo。我使用IVsSolution.GetSolutionInfo使它工作

IVsSolution solution = (IVsSolution) Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(IVsSolution));
solution.GetSolutionInfo(out string solutionDirectory, out string solutionName, out string solutionDirectory2);
var solutionPath = solutionDirectory + System.IO.Path.GetFileNameWithoutExtension(solutionName);

推荐阅读