我正在玩一个调用外部进程的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中走错了路吗?任何帮助表示赞赏。
答案 0 :(得分:1)
你尝试过try / catch吗?特别是有很多与VS扩展的工作路径/当前目录有关的问题(但我希望记事本至少可以工作)。
我也不确定你希望代码做什么(在重定向notepad.exe的stdout方面);你能澄清一下吗?
目前不是问题,但请注意,当使用路径作为参数时,您需要从头开始添加引号 - 即。
p.StartInfo.Arguments = "\"" + documentPath + "\"";
(如果路径中有空格)