2

我有一个 WinForms 应用程序,它通过调用接受命令行参数Environment.GetCommandLineArgs()并对其进行处理。

它在调试模式下工作正常 - 我在项目属性的调试选项卡中输入参数,然后运行它(F5)并且应用程序正确获取参数。

但是在我发布应用程序并尝试使用以下代码行从另一个 Winform 应用程序调用它之后:

Process.Start("\\path\to\myApp\MyApp.application", "4")

它不起作用。显然,由于某种原因,该参数没有传递给应用程序,我不知道为什么。我还尝试创建一个新进程并ProcessStartInfo.Arguments在启动它之前对其进行设置,但它仍然无法正常工作。

谁能帮我?

更新

在我看来,当Process.Start("\\path\to\etc", "4")被调用时,实际运行的是我机器上程序的本地副本,位于C:\users\myUserName\AppData\Local\App\2.0\long-string-of-digits-and-letters\MyA‌​pp.exe. 如果我Process.Start("C:\users\etc", "4")改为运行 -它可以工作

现在我的问题是 - 为什么在运行时参数没有传递给程序的本地副本Process.Start("\\path\to\etc", "4")?我应该怎么做才能将参数传递给本地副本?

4

1 回答 1

0

好的,正如我在问题更新中所写,问题出在链接中。大概该.application文件在我的机器上运行了本地.exe文件,但由于某种原因没有将参数传递给它。我不得不直接打开本地.exe文件。

为了解决这个问题,我添加了以下代码(为简洁起见,省略了验证/异常处理逻辑):

Dim path As String = Environment.GetEnvironmentVariable("LOCALAPPDATA") & "\apps\2.0"
Dim files() As String = Directory.GetFiles(path, "MyApp.exe", IO.SearchOption.AllDirectories)
Process.Start(files(0), "4")

不是最佳解决方案(因为它假设本地.exe文件位于 的某个子文件夹中%LOCALAPPDATA%\apps\2.0),但至少它解决了我的问题......

于 2013-04-10T12:51:30.163 回答