Как передать аргументы командной строки в AppDomain.ExecuteAssembly?

Я пытаюсь запустить сборку (.NET 3.5, приложение Windows Form), используя AppDomain.ExecuteAssembly().

Причина, по которой мне нужно это сделать, заключается в том, что я могу изменить базовый каталог приложения и пути проверки (т. е. путь проверки/зависимости является родительской папкой приложения, поэтому app.config не будет работаю насколько я знаю)

Однако я не могу передать аргументы командной строки.

Я пытаюсь выполнить метод следующим образом:

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

Однако мое приложение НЕ получает аргументы.

Что я делаю неправильно?


person SofaKng    schedule 27.07.2011    source источник
comment
Можете ли вы показать соответствующий код из application.exe?   -  person CodeNaked    schedule 27.07.2011
comment
Конечно, но я буквально просто делаю For Each s As String In My.Application.CommandLineArgs, Console.WriteLine(s)... (вы поняли идею)   -  person SofaKng    schedule 27.07.2011
comment
Вы запускаете одно и то же приложение, и оно помечено как приложение с одним экземпляром?   -  person CodeNaked    schedule 27.07.2011
comment
application.exe выполняется из другой сборки (назовем ее main_program.exe) — кроме того, я пробовал запускать другие сборки с помощью ExecuteAssembly, и ни одна из них, похоже, не получает никаких аргументов командной строки, когда я использую метод ExecuteAssembly() .   -  person SofaKng    schedule 27.07.2011


Ответы (2)


Вам нужно будет проанализировать аргументы командной строки, которые передаются функции static void Main(string[] args) вместо использования Environment.GetCommandLineArgs().

person Loman    schedule 20.10.2011

Вот небольшое решение .NET 3.5 с двумя исполняемыми файлами, которое успешно делает именно то, что вы пытаетесь сделать, и оно работает. Я не знаю, что я сделал не так, как ты.

person Justin Dearing    schedule 23.09.2011