Доступ к аргументам командной строки для приложения WPF в отдельном домене приложения - PullRequest
0 голосов
/ 05 января 2012

Есть ли чистый способ доступа к аргументам командной строки, передаваемым как часть вызова AppDomain.ExecuteAssembly, запускающего приложение WPF?

Я раскручиваю приложение WPF в отдельном домене приложения и передаю аргументы приложению следующим образом:

AppDomain moduleDomain = AppDomain.CreateDomain("Friendly Name");
moduleDomain.ExecuteAssembly(path, new[] { "arg1", "arg2" });

Существует обходной путь для доступа к этим аргументам, поскольку и Environment.GetCommandLineArgs () и StartupEventArgs возвращают аргументы командной строки для исходного приложения, а не один развернулся с ExecuteAssembly ().

Я хотел бы получить доступ к аргументам, передаваемым приложению WPF, без необходимости вручную определять метод Main, предпочтительно используя StartupEventArgs. Есть ли способ сделать это?

Запуск приложения WPF в отдельном процессе работает, но снижает производительность и усложняет отладку.

1 Ответ

3 голосов
/ 05 января 2012

Комментарий Тиграна привел меня к решению, которым я доволен, используя AppDomain.SetData вместо использования аргументов командной строки. Основная схема выглядит так:

AppDomain moduleDomain = AppDomain.CreateDomain("Friendly Name");
moduleDomain.SetData("arg1", "arg1Value");
moduleDomain.SetData("arg2", "arg2Value");
moduleDomain.ExecuteAssembly(path);

Затем для доступа к «аргументам» в приложении WPF:

string arg1Value = AppDomain.CurrentDomain.GetData("arg1");
string arg2Value = AppDomain.CurrentDomain.GetData("arg2");

Это хорошо работает для моего варианта использования.

...