system.diagnostics.process.startを使用してプログラムを実行すると、MissingMethodexceptionが発生します

StackOverflow https://stackoverflow.com/questions/3513724

質問

私はCompact Framework 2.0プロジェクトに取り組んでおり、Process.startを使用して別のプログラム「A」A「A」からプログラム「B」を立ち上げようとしています。私はこれを何度かしましたが、今回はいくつかの奇妙な問題に遭遇しています。

プログラム「B」は起動しますが、MissingMethodexceptionを引き起こし、基本的には参照した特定のアセンブリが欠落していることを示します。問題は、プログラム「B」と同じフォルダーに、アセンブリ.DLLがすぐそこにあることです。プログラム「B」をダブルクリックすると、MissingMethoDexceptionなしで正しく実行されます。この問題が発生するのは、Process.Start "A"の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」がロードされていません。 2つのプログラムが同じ.dllを同時にロードできない場合、それが問題です。これはそうですか?

役に立ちましたか?

解決 2

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

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top