2017-07-04 13 views
0

バッチテストでは、ターミナルから既存のwinformsアプリケーション(MyApp.exeなど)を呼び出し、同じディレクトリの.xmlファイル.exe(MyAppConfig.xml)としてください。端末からstart /realtime c:\MyApp.exe /config="MyAppConfig.xml"に電話できるようにするには、アプリケーションにどのような変更を加える必要がありますか?誰でもこの機能を実装する方法について正しい方向で私を指摘することができますか?ヘルプは高く評価しました。winformアプリケーションをterminalコマンドで実行し、構成引数xmlファイルをコマンド引数として指定します。

答えて

2

アプリケーションのProgram.csファイルには、アプリケーションエントリポイントMain()があります。署名を変更し、パラメータを保持する配列stringを追加します。次に、パラメータをチェックし、ロジックを実装します。このような

何か:

static void Main(string[] startArgs) 
{ 
    if (startArgs.Length == 0) 
    { 
     //show messagebox stating that there's no parameters or something else 
    } 
    else 
    { 
     var configArg = startArgs.FirstOrDefault(s => s.StartsWith("config")); 
     if (configArg == null) 
     { 
      //config parameter is missing 
     } 
     else 
     { 
      string xml = configArg.Split('=')[1]; 
      //xml holds your path to your xml file. 
      //Now you can pass it to form, or load it here 

      //XmlDocument doc = new XmlDocument(); 
      //doc.Load(xml); 
      //etc... 
     } 

    } 

    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new Form1()); 
} 

あなたが複数のコマンドラインパラメータを持つように計画している場合、あなたはコマンドライン引数を解析するために使用ApacheのコモンズのCLI APIの.NETのポートですNET CLIライブラリを探す必要があります。 ..

+0

ありがとう、非常に完全で清潔な説明! –

+0

@MiroslavRadojević助けてくれると嬉しいです。 Sretno! ;) – Nino

2

コンソールまたはフォームアプリケーションを構築する場合、Mainメソッドは通常、コードのエントリポイントとして機能します。これは、CLIから渡されるパラメータとして文字列の配列をとります。

public static void Main(string[] args) 
{ 
    for(int i = 0; i < args.Length; i++) 
    { 
     Console.WriteLine("Argument #{0} = {1}", i, args[i]); 
    } 
} 

だからprogram.exe FOO BARがもたらすであろう実行されている:

Argument #0 = FOO 
Argument #1 = BAR 

ます。また、引数が注文-独立しを作るためにprogram.exe config="MyAppConfig.xml"表記法を使用することもできますが、あなたには、いくつかの構文解析を自分で行う必要があります。