【问题标题】:Acessing currently opened solution in a vsix project在 vsix 项目中访问当前打开的解决方案
【发布时间】:2015-07-08 12:06:07
【问题描述】:

我想从 vsix 项目访问当前在 Visual Studio 中打开的解决方案的路径。我怎样才能得到它?

This thread tells if a solution is open 与否,但没有给出打开解决方案的路径

【问题讨论】:

    标签: c# visual-studio visual-studio-2015 vsix


    【解决方案1】:

    我建议在开发包时尽可能避免使用 EnvDTE,并尽可能使用本机服务。在这种情况下IVsSolution.GetSolutionInfo

    【讨论】:

    • 能否详细说明您为什么建议这样做?
    • 自动化模型 (EnvDTE) 是原生 VS 服务之上的一层。 1)有些项目类型(命名为未建模)没有完全实现它(设置项目,一些数据库项目)。 2) 实现存在错误(例如 EnvDTE.Project.CodeModel 和 EnvDTE.ProjectItem.FileCodeModel 使用新的 C# 和 VB.NET 功能 3) VS 的新功能(例如 Lightweight Solution Load,VS 2017 的 LSL)未在环境DTE。 4) VS 2017 的核心编辑器安装中不再包含一些自动化 DLL,例如 VsWebSite.Interop。我可以继续,但 EnvDTE 是二等公民
    • 谢谢你的解释,伙计!
    【解决方案2】:

    我用这个:

        public string GetInitialFolder(DTE dte)
        {
            if (!dte.Solution.IsOpen)
                return null;
            return System.IO.Path.GetDirectoryName(dte.Solution.FullName);
        }
    

    但预计会出错,有时它无法返回路径!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      相关资源
      最近更新 更多