【问题标题】:How can I pass command-line arguments to AppDomain.ExecuteAssembly?如何将命令行参数传递给 AppDomain.ExecuteAssembly?
【发布时间】:2011-10-14 05:55:35
【问题描述】:

我正在尝试使用 AppDomain.ExecuteAssembly() 运行程序集(.NET 3.5,Windows 窗体应用程序)。

我需要这样做的原因是我可以更改应用程序基目录和探测路径(即探测/依赖路径是应用程序的 parent 文件夹,因此是 app.config据我所知是行不通的)

但是,我似乎无法传递命令行参数。

我正在尝试执行这样的方法:

myAppDomain.ExecuteAssembly("c:\folder\application\application.exe", Nothing,
    New String() { "argument 1", "argument 2", "argument 3" })

但是,我的应用程序没有收到参数。

我做错了什么?

【问题讨论】:

  • 能否展示application.exe中的相关代码?
  • 当然,但我实际上只是在 My.Application.CommandLineArgs、Console.WriteLine(s) 中执行 For Each s As String...(你懂的)
  • 您是否正在启动同一个应用程序并且它是否被标记为“单实例”应用程序?
  • application.exe 正在从不同的程序集执行(我们称之为 main_program.exe) - 另外,我尝试使用 ExecuteAssembly 运行其他程序集,但它们似乎都没有收到任何命令行参数当我使用 ExecuteAssembly() 方法时。

标签: .net command-line appdomain command-line-arguments .net-assembly


【解决方案1】:

您需要解析传递给静态 void Main(string[] args) 函数的命令行参数,而不是使用 Environment.GetCommandLineArgs()

【讨论】:

    【解决方案2】:

    这是一个小的a .NET 3.5 solution,其中包含两个可执行文件,它们完全符合您的要求,并且可以正常工作。我不知道我做了什么和你不一样。

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 1970-01-01
      • 2012-09-01
      • 2020-08-02
      • 2014-01-13
      • 2020-09-02
      • 2014-05-03
      • 1970-01-01
      相关资源
      最近更新 更多