1

外部プロセスを呼び出す 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でこれを間違った方法で行っていますか? どんな助けでも大歓迎です。

4

1 に答える 1

1

try / catchを試しましたか?特に、VS拡張機能を備えた作業パス/現在のディレクトリに関連するいくつかの落とし穴があります(ただし、少なくともメモ帳は機能すると思います)。

また、そのコードが何を期待しているのかもわかりません(notepad.exeのstdoutをリダイレクトするという点で)。明確にできますか?

現時点では問題ではありませんが、パスを引数として使用する場合は、最初から引用符を追加する必要があることに注意してください。

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

(パスにスペースが含まれている場合)

于 2009-07-23T13:11:37.863 に答える