我创建了一个工具窗口作为 VSIX 项目的一部分,并安装了一个扩展来测试它。因此,工具窗口需要访问在 Visual Studio 中打开的当前解决方案/项目。当用户第一次创建项目时,我们可以使用如下所述的 DTE 对象获取路径,我尝试了它们,它工作正常,
但是下次当用户双击解决方案时如何获取当前的解决方案路径?现在,当用户打开 .sln 文件时,工具窗口会中断,因为它无法找到打开的解决方案路径。
我创建了一个工具窗口作为 VSIX 项目的一部分,并安装了一个扩展来测试它。因此,工具窗口需要访问在 Visual Studio 中打开的当前解决方案/项目。当用户第一次创建项目时,我们可以使用如下所述的 DTE 对象获取路径,我尝试了它们,它工作正常,
但是下次当用户双击解决方案时如何获取当前的解决方案路径?现在,当用户打开 .sln 文件时,工具窗口会中断,因为它无法找到打开的解决方案路径。
当用户双击并打开解决方案时,我们手头没有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);