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

C# 使用System.Diagnostics.Process.Start运行程序会导致MissingMethodException,c#,compact-framework,system.diagnostics,process.start,C#,Compact Framework,System.diagnostics,Process.start,我正在从事一个Compact Framework 2.0项目,我正在尝试使用Process.Start从另一个程序“a”中启动一个程序“B”。我以前做过好几次,但这次我遇到了一些奇怪的问题 程序“B”确实启动,但它会导致MissingMethodException,基本上告诉我它缺少它引用的某个程序集。问题是assembly.dll就在那里,与程序“B”位于同一文件夹中。如果我双击程序“B”,它会正常运行,没有MissingMethodException,只有在使用Process.Start启动

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

程序“B”确实启动,但它会导致MissingMethodException,基本上告诉我它缺少它引用的某个程序集。问题是assembly.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”都使用程序“B”未加载的.dll。如果两个程序不能同时加载相同的.dll,那么这就是问题所在。是这样吗?

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

我通过复制程序B程序集上的引用代码并删除所有引用来实现它。它一点也不优雅,但我无法用任何其他方式让它工作。如果有人知道可能出了什么问题,我将不胜感激。它可能在其他时间派上用场。谢谢

如果直接启动B计划会发生什么?我是说双击它。。编辑:对不起,我遗漏了问题中的几行:DMemory似乎足够了,我现在想这可能是我在原始答案中添加的问题。可能是我不能加载相同的.dll两次吗?他们没有理由不能使用相同的程序集。他们每个人都将加载自己的副本(除非它是空白的)。它们都必须被编译以使用相同版本的DLL(或者有一个app config条目告诉htem它们可以加载当前的DLL)。它们都应该被编译以运行相同的版本,因为它们位于同一解决方案上,并且引用被添加到同一解决方案上的项目中。我如何告诉程序加载任何版本?谢谢