2017-07-04 80 views
0

批處理測試需要使用存儲在同一目錄中的.xml文件中的配置從終端調用現有winforms應用程序(比如MyApp.exe)作爲.exe(比如MyAppConfig.xml)。爲了能夠從終端呼叫start /realtime c:\MyApp.exe /config="MyAppConfig.xml",我應該在應用程序上做出哪些更改。任何人都可以指出我如何實現這一功能的正確方向?幫助讚賞。使用terminal命令運行winform應用程序,並將配置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()); 
} 

如果您計劃擁有多個命令行參數,你應該尋找NET CLI庫,它是Apache的百科全書CLI API的.NET端口,用於解析命令行參數。 ..

+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"符號,使參數順序,獨立的,但你必須做一些解析自己。

相關問題