从VS Addin调用时,process.start()挂起

时间:2009-07-23 13:04:22

标签: c# process visual-studio-addins

我正在玩一个调用外部进程的Visual Studio 2005的插件。

当我在插件外部运行代码时 - 即在独立项目中它运行正常。但是,当我将其称为插件的一部分时,会调用Process.Start()但是没有任何反应,后续的代码行永远不会到达。

我尝试使用标准版和高级版权限运行VS,但效果相同。

代码如下 - 点击自定义菜单项时调用:

        string documentPath = @"C:\TestCode\TestApp\Testform.cs";
        string folder = Path.GetDirectoryName(@"C:\TestCode\TestApp\");

        System.Diagnostics.Process p = new System.Diagnostics.Process();
        p.StartInfo.FileName = "notepad.exe";
        p.StartInfo.Arguments = documentPath;
        p.StartInfo.UseShellExecute = true;
        p.StartInfo.RedirectStandardOutput = true;
        p.Start();

        string output = p.StandardOutput.ReadToEnd();

我尝试了不同的可执行文件,但这没有任何区别。我在VS中走错了路吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

你尝试过try / catch吗?特别是有很多与VS扩展的工作路径/当前目录有关的问题(但我希望记事本至少可以工作)。

我也不确定你希望代码做什么(在重定向notepad.exe的stdout方面);你能澄清一下吗?

目前不是问题,但请注意,当使用路径作为参数时,您需要从头开始添加引号 - 即。

p.StartInfo.Arguments = "\"" + documentPath + "\"";

(如果路径中有空格)