使用System.Diagnostics.Process.Start运行程序会导致MissingMethodException

时间:2010-08-18 15:24:20

标签: c# compact-framework system.diagnostics process.start

我正在开发一个Compact Framework 2.0项目,我正在尝试使用Process.Start从另一个程序“A”中启动程序“B”。我以前做了好几次,但这次我遇到了一些奇怪的问题。

程序“B”确实启动,但它会导致MissingMethodException,基本上告诉我它缺少它引用的某个程序集。问题是程序集.dll就在那里,与程序“B”在同一个文件夹中。如果我双击程序“B”,它运行正常,没有MissingMethodException,只有在程序“A”中使用Process.Start启动时才会出现此问题。我完全不知道这里发生了什么。我尝试设置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 个答案:

答案 0 :(得分:1)

设备上的内存压力如何?如果程序B依赖于程序集C,但没有足够的内存(虚拟或物理)来加载程序集C,那么你将得到一个MissingMethodException(而不是OutOfMemoryException,我一直认为这更有意义)。

答案 1 :(得分:1)

我通过复制程序B程序集中的引用代码并删除所有引用来使其工作。它远非优雅,但我不能让它以任何其他方式工作。如果有人知道可能出了什么问题我会非常感激。它可能会在其他时间派上用场。感谢