2009-06-12 17 views
11

"任意のCPU"コンパイル済みの.NETアプリケーションを使用している場合、64ビットOSで64ビットモードで実行されます。「Any CPU」コンパイル済みアプリケーションを64ビットOSで32ビットモードで実行する方法はありますか?

私は何らかの理由でこのアプリを32ビットモードで動作させたいと思っています。 (まるで "x86"を使ってコンパイルされたかのように)。再コンパイルはオプションではないので、これは実行時に設定することが可能ですか?おそらく.manifestファイルで?

答えて

10

は、私はあなたがCorFlags.exe

のような何かでこれを行うことができると信じて:アセンブリが名前の強い場合、あなたはまた、/ forceオプションを使用する必要がありますことを+


CorFlags yourassembly.exe/32BITました強力な命名規則を破るので、アセンブリを辞表する必要があります。

+0

これは残念ながら実現不可能です。問題のアプリは、エンドユーザー(コンシューマー)に強固な名前を付けて配布しています。また、再署名も実際にはオプションではありません。残念な。 –

+1

CLRを設定すると、指定したアセンブリの厳密な名前検証をスキップできます。 "sn.exe -Vr assemblyname"(-Vuを再度有効にする)を使用します。明らかに、これは顧客のマシンで実行する必要があります。厳密な名前検証を無効にすると、基本的にCLRのセキュリティホールが突き刺されるため、このアセンブリをアプリにコピーして完全な信頼を自動的に受け取ることができます(http://msdn.microsoft.com/en/ -us/library/k5b5tt23.aspx)。私の推薦は、これを混乱させないで、再コンパイルを行う方法を見つけるか、それをしないことです。 –

+0

@Simon P.Stevens、私はすべての点であなたに同意します。私が望むのは、配布可能なマニフェストファイルのエントリになる可能性があるということでした。しかし、そうではないようです。 –

関連する問題