我有一个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