如何从DTE获取exe文件夹的项目路径

问题描述

我编写了Visual Studio扩展(Vsix)。

到目前为止我所做的:

  1. 我有一个控制台应用程序,该应用程序在 被执行
  2. 正在通过我的插件运行控制台应用程序。 ->我需要该路径以不同的方式启动进程以从控制台获取输出

我需要找到exe的当前正在运行的外部项目路径。

我的代码

  private void Execute(object sender,EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();

        // This runs my external console application
        dte.solution.solutionBuild.Run();

        Path.GetDirectoryName(dte.solution.FullName);
        Project prj = dte.solution.Projects.Item(1);
        string  msg2,msg3 = "";
        msg2 = prj.DTE.FullName;
        msg3 = prj.DTE.FileName;
      
    }

当前运行应用程序的项目是 devenv.exe ,因此:

Path.GetDirectoryName(dte.solution.FullName)= “ D:\ user \ proj \ projName \ Docs \ App \ AppName”

我需要exe的路径。

msg2,msg3 = “ D:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Community \ Common7 \ IDE \ devenv.exe”

您有什么提示吗?

解决方法

也许您可以使用ProcessModule.ModuleName来获取当前进程的完整路径。

我用菜单命令创建一个Visual Studio扩展,并将此代码添加到Execute方法中

        private void Execute(object sender,EventArgs e)

        {

            ThreadHelper.ThrowIfNotOnUIThread();

           

            string message = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

            string title = "Command1";

           

            ...

        }

结果:

enter image description here