none
ProcessInfoクラスでxsd.exeを実行したいのですが RRS feed

  • 質問

  • どうしたらいいのでしょうか。

    具体的にはXMLファイルにスキーマを作成する必要があります。

     

    サンプルのコードは下記です。

     

    using System Diagnostics;

    ..............

    ProcessInfo psi = new ProcessInfo("Xsd.exe");

    psi.Arguments = "xsd " + xmlFile;

    Process.Start(psi);    <-- WinSys32Exceptionがスローされます。

     

    テストでVisual Studioコマンドプロンプトを起動してxsd sample.xmlで実行すると

    スキーマが生成する事を確認しました。

    これをコードで実現したいのですが、エラーになってしまいます。どうやらsys32コマンドが

    開かれているようです。

     

    よろしくお願いします。

    2008年7月22日 9:44

回答

  • WinSys32Exception じゃなくて Win32Exception ではないでしょうか? そして例外のメッセージに原因も書かれてませんか?

    ところで、xsd.exe は SDK 付属のツールなので .NET Framework 再頒布可能パッケージを入れただけの普通のユーザの PC にはインストールされていませんが大丈夫でしょうか? SDK 付属であることから分かるとおり xsd.exe は開発中で必要になるものであってあまり実行時に使うものではないと思いますが。あ、開発の補助ツールとかならそういうのもあるか。

    2008年7月22日 11:42
  •  KentaroM さんからの引用

    VSコマンドプロンプトでは実行出来るのですが、プログラムでは普通のユーザの

    PCにはインストールされていないのでしょうか?

    一般のユーザのPCには入っていません。

    一般のユーザのPCで実行する必要があるのであれば、xsd.exeを必要としない形に実装していく必要があるとみられます。

    (注:ここで言う「一般のユーザ」はVisual Studioをインストールしていないことを前提としています)

     

    xsd.exeのある場所から分かるとおり、Visual Studioによってインストールされたものです。

    ※もしくは、SDK(=Software Development Kit、ソフトウェア開発キット)をインストールによっても入るはず。単体で勝手にコピーしてはいけません。

     

    2008年7月22日 14:18
    モデレータ

すべての返信

  • WinSys32Exception じゃなくて Win32Exception ではないでしょうか? そして例外のメッセージに原因も書かれてませんか?

    ところで、xsd.exe は SDK 付属のツールなので .NET Framework 再頒布可能パッケージを入れただけの普通のユーザの PC にはインストールされていませんが大丈夫でしょうか? SDK 付属であることから分かるとおり xsd.exe は開発中で必要になるものであってあまり実行時に使うものではないと思いますが。あ、開発の補助ツールとかならそういうのもあるか。

    2008年7月22日 11:42
  • 失礼いたしました。Win32Exceptionです。メッセージは

    The system cannot find the file specified

    になっています。

     

    xsd.exeは、D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Binに

    ありましたが、SDK付属自体がよくわかっておりません。。。

     

    VSコマンドプロンプトでは実行出来るのですが、プログラムでは普通のユーザの

    PCにはインストールされていないのでしょうか?

    2008年7月22日 12:13
  •  KentaroM さんからの引用

    VSコマンドプロンプトでは実行出来るのですが、プログラムでは普通のユーザの

    PCにはインストールされていないのでしょうか?

    一般のユーザのPCには入っていません。

    一般のユーザのPCで実行する必要があるのであれば、xsd.exeを必要としない形に実装していく必要があるとみられます。

    (注:ここで言う「一般のユーザ」はVisual Studioをインストールしていないことを前提としています)

     

    xsd.exeのある場所から分かるとおり、Visual Studioによってインストールされたものです。

    ※もしくは、SDK(=Software Development Kit、ソフトウェア開発キット)をインストールによっても入るはず。単体で勝手にコピーしてはいけません。

     

    2008年7月22日 14:18
    モデレータ
  • その後同僚ともテストをした結果、xsd.exeのフルパスを指定して実行する事ができました。

    ただこれはあくまでもVSがインストールされた環境のみに限定されるという事ですね。

    みなさん、ありがとうございました。

    2008年7月23日 7:15
  • こんにちは。中川俊輔 です。

     

    Hongliangさん、Azuleanさん、回答ありがとうございます。

     

    KentaroMさん、フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、

    Hongliangさん、Azuleanさんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    KentaroMさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年7月31日 9:40