Запуск программы с System.Diagnostics.Process.Start вызывает исключение MissingMethodException - PullRequest
2 голосов
/ 18 августа 2010

Я работаю над проектом Compact Framework 2.0 и пытаюсь запустить программу «B» из другой программы «A», используя Process.Start. Я делал это несколько раз раньше, но на этот раз я столкнулся с некоторыми странными проблемами.

Программа «B» запускается, но вызывает исключение MissingMethodException, в основном сообщая мне, что ей не хватает определенной сборки, на которую она ссылалась. Проблема в том, что сборка .dll находится прямо там, в той же папке, что и программа "B". Если я дважды щелкну по программе «B», она будет работать правильно без MissingMethodException, эта проблема возникает только при запуске с Process.Start в программе «A». Я абсолютно не знаю, что здесь происходит. Я попытался установить свойство WorkingDirectory без удачи. Любые идеи относительно того, почему программа не может загрузить свои ссылки при выполнении через Process.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();

РЕДАКТИРОВАТЬ Я только что кое-что подумал ... И программа "A", и программа "B" используют .dll, которую программа "B" не загружает. Если две программы не могут загрузить один и тот же .dll одновременно, это проблема. Это тот случай?

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Ну, я заставил его работать, продублировав ссылочный код в сборке программы B и удалив все ссылки.Это далеко не элегантно, но я не мог заставить его работать по-другому.Если у кого-то есть представление о том, что могло пойти не так, я был бы очень признателен.Это может пригодиться в другой раз.Спасибо

1 голос
/ 18 августа 2010

Как выглядит давление памяти на устройстве?Если программа B использует сборку C, но недостаточно памяти (виртуальной или физической) для загрузки сборки C, вы получите исключение MissingMethodException (вместо исключения OutOfMemoryException, которое, как я всегда думал, имело бы больше смысла).

...