.NETで 'プラットフォームターゲット:任意のCPU'コンパイラオプションを使用すると、.NETアセンブリがx64マシンで64 ビットとして実行され、32 ビットがオンx86マシン。 'Platform Target:x86'コンパイラオプションを使用して、x64マシン上でx86としてアセンブリを実行するよう強制することもできます。'任意のCPU' .NETアセンブリでのx86 CLRの強制
「任意のCPU」フラグを使用してアセンブリを実行できますが、それをx86またはx64 CLRで実行する必要があるかどうかを判断できますか?通常、この決定は、基礎となるシステムのビット数に基づいてCLR/OSローダーによって行われます(これは私の理解です)。
他の実行中のプロセスとやり取り(読み込み:コードを挿入)できるC#.NETアプリケーションを作成しようとしています。 x64プロセスは、他のx64プロセスにのみインジェクトすることができます。理想的には、JITコンパイルと任意のCPUオプションを利用して、単一のアプリケーションをx64またはx86プロセス(x64マシン上)に注入できるようにしたいと考えています。
考えられるのは、アプリケーションがのいずれかのCPUとしてコンパイルされるということです。 x64マシンでは、x64として実行されます。ターゲットプロセスがx86の場合は、それ自体を再起動して、CLRで強制的にx86として実行する必要があります。これは可能ですか?
私はあなたがx86ランチャーアセンブリでそれをラップすることによって強制することができると知っていますが、あなたは動的に 'Any CPU'コンパイルされたアセンブリに対して強制することができますか?とにかくありがとう、私は他の何かを見つけることができない場合おそらくこれに戻ります。 upvoteしかし、十分な担当者はありません。 – jeffora
プロセスは64ビットまたは32ビットです。アセンブリが32ビットプロセスでロードされ、任意のCPUとして構築されている場合、64ビットプロセスでは64ビットとしてJITされます。アセンブリをホストするアセンブリをどのように作成する予定ですか? – jnoss