我正在研究一个紧凑型框架2.0项目,并且正在尝试使用Process.start启动从另一个程序中启动“ B”程序。我以前做过几次,但是这次我遇到了一些奇怪的问题。

程序“ B”确实启动了,但是它会导致缺失的敏感感受,基本上告诉我它缺少引用的某个组件。问题在于汇编.dll就在那里,与程序“ B”相同的文件夹。如果我双击程序“ b”,它可以正确运行,而没有缺少的methodexception,则只有在使用Process启动时才会出现此问题。我绝对不知道这里发生了什么。我尝试在没有运气的情况下设置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,那么这就是问题。是这样吗?

有帮助吗?

解决方案 2

好吧,我通过在程序B的组件上复制引用代码并删除所有参考文献来使其起作用。它远非优雅,但我无法其他任何方式工作。如果有人知道可能出了什么问题,我将非常感谢。它可能会派上用场。谢谢

其他提示

设备上的内存压力看起来如何?如果程序B依靠汇编C,但是没有足够的内存(虚拟或物理)来加载汇编C,那么您将获得一个缺失的methodexception(而不是OutofMemoryException,我一直认为这会更有意义)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top