我有一個WinForms應用程序,它通過調用Environment.GetCommandLineArgs()
來接受命令行參數並對其執行某些操作。將命令行參數傳遞給WinForm可在調試模式下工作,但不會在發佈後工作
在調試模式下工作正常 - 我在Project Properties的Debug選項卡中輸入參數,然後運行它(F5),應用程序正確地獲取參數。
但是在我發佈應用程序,並嘗試從另一個WinForm應用程序使用此代碼行調用它:
Process.Start("\\path\to\myApp\MyApp.application", "4")
這是行不通的。顯然這個論點並沒有被傳遞給應用程序,我不知道爲什麼。我還嘗試創建一個新流程,並在啓動之前設置其ProcessStartInfo.Arguments
,但它仍然無效。
任何人都可以幫助我嗎?
UPDATE
在我看來,當Process.Start("\\path\to\etc", "4")
被調用時,究竟是怎樣運行的是我的機器上的程序,位於C:\users\myUserName\AppData\Local\App\2.0\long-string-of-digits-and-letters\MyApp.exe
的本地副本。如果我運行Process.Start("C:\users\etc", "4")
而不是 - 它可以運行。
現在我的問題是 - 爲什麼在運行Process.Start("\\path\to\etc", "4")
時爲什麼沒有將參數傳遞給本地副本?我應該怎麼做才能將參數傳遞給本地副本?
GetCommandLineArgs返回一個字符串數組,其中第一個元素是程序的名稱,並從第二個索引開始。你確定你的應用程序中有正確的索引嗎?你能告訴你如何處理這個論點? – Steve 2013-04-07 11:04:39
嘗試通過輸出「Environment.CommandLine」的結果,沿着Steve建議的方向進行調試。你在這兩種情況下看到了什麼?它有什麼不同,如果有的話? – 2013-04-07 11:06:45
@Steve我知道。我首先檢查'Environment.GetCommandLineArgs()。Length> 1'來查看是否有參數,然後使用'Environment.GetCommandLineArgs()(1)'來獲取它。 – kodkod 2013-04-07 11:21:09