Запуск программы с System.diagnostics.process.Start вызывает пропущенную методексацию
-
29-09-2019 - |
Вопрос
Я работаю над проектом Compact Framework 2.0, и я пытаюсь запустить программу «B» из другой программы «A», используя процесс. Start. Я делал это несколько раз раньше, но на этот раз я сталкиваюсь с некоторыми странными проблемами.
Программа «B» запускается, но она вызывает пропущенную методексацию, в основном говорит мне, что ей не хватает определенной сборки, на которую она ссылается. Проблема в том, что сборка. Если я дважды щелкнув программу «B», она работает правильно без пропущенного методексекции, то только при запуске с процессом. Начните в программе «A», что возникает эта проблема. Я абсолютно понятия не имею, что здесь происходит. Я попытался установить собственность WorkingDirectory без повезения. Любые идеи относительно того, почему программа не может загрузить свои ссылки при выполнении через процесс. Start? Спасибо
System.Diagnostics.Process proc = new System.Diagnostics.Process();
ProcessStartInfo startInfo = new ProcessStartInfo(programBFullPath, "argument");
//I've been changing these two properties, have tried shell execute with both false and true, tried setting working directory and not setting it also
startInfo.UseShellExecute = false;
startInfo.WorkingDirectory = programBDirectory;
proc.StartInfo = startInfo;
proc.Start();
РЕДАКТИРОВАТЬ Я просто подумал о чем -то ... оба программы «а» и программа «b» используют .dll, эта программа «b» не загружается. Если две программы не могут загружать одновременно .dll одновременно, то это проблема. Это так?
Решение 2
Ну, я заставил это работать, дублировав ссылочный код на сборке программы B и удалив все ссылки. Это далеко не элегантно, но я не мог заставить его работать по -другому. Если у кого -то есть представление о том, что могло бы пойти не так, я бы очень признателен. Это может пригодиться в другой раз. Спасибо
Другие советы
Как смотрится давление памяти на устройстве? Если программа B полагается на сборку C, но существует недостаточная память (виртуальная или физическая) для загрузки сборки C, то вы получите пропущенную методекспением (вместо OutofmemoryException, которое, как я всегда думал, будет иметь больше смысла).