2

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」の両方がプログラム「B」がロードしていない.dllを使用しています。2つのプログラムが同じ.dllを同時にロードできない場合は、それが問題です。これは本当ですか?

4

2 に答える 2

1

デバイスのメモリ負荷はどのように見えますか?プログラムBがアセンブリCに依存しているが、アセンブリCをロードするのに十分なメモリ(仮想または物理)がない場合は、MissingMethodException(OutOfMemoryExceptionの代わりに)が発生します。

于 2010-08-18T15:32:41.810 に答える
1

プログラム B のアセンブリで参照されているコードを複製し、すべての参照を削除することで機能させました。エレガントとはほど遠いですが、他の方法で動作させることはできませんでした。何がうまくいかなかったのか、誰かが何か考えを持っているなら、私はそれを大いに感謝します. またいつか役に立つかもしれません。ありがとう

于 2010-08-18T20:42:36.017 に答える