2016-08-05 4 views
0

私はプロジェクトを作成し、Any CPUとしてコンパイルしました。 x64-Windowsの場合あなたは(私のように)のx64-OS上で動作しているとき、ターゲットplattformはx64ので見ることができるようにCorFlagsによると、私の.NET-Programは64bitとして動作し、DumpBinは32bitを意味します。

x64vsx86

:私は私のコードからそのアセンブリを参照するには問題があるとして、私は、ランタイムとターゲット-plattformをチェックします。私はまた、DumpBinチェック:

PE signature found 

File Type: EXECUTABLE IMAGE 

FILE HEADER VALUES 
      14C machine (x86) 
       3 number of sections 
     57A49000 time date stamp Fri Aug 05 15:09:20 2016 
       0 file pointer to symbol table 
       0 number of symbols 
       E0 size of optional header 
      102 characteristics 
        Executable 
        32 bit word machine 

をしかし、私はそのアセンブリのためのplattformとしてx64の私を与えるCorFlags it's実行すると:私の知る限り、ターゲットプラットフォームとしてOSをAny CPUを選んだとき、私は理解して

Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 9 
ILONLY : 1 
32BIT  : 0 
Signed : 1 

をアセンブリの実行方法が選択されます。 64ビットシステムでは64bit、32bit-OSでは32bitで動作します。

私の質問は:どのバージョンが私ですか実際にはターゲット設定していますか? 32または64ビット?

答えて

0

これは完全に正常です。任意のCPUは、任意のCPU上で実行できるので、ヘッダ内のマシンフィールドは関連しないことを意味します。 何かを選んだだけで、x86を選ぶだけです。 Win98やWin2kのような古代のWindowsのバージョンとの互換性を保ちます。

special heroicsは64ビットオペレーティングシステムで発生するため、OSローダーは32ビット実行可能ファイルから64ビットプロセスを作成するのに役立つ必要があり、内部ローダー構造にパッチを適用する必要があります。 mscoree.dll "loader-shim"は、リンクされたポストで説明されているように、そのジョブを取得します。

ではなく、は特定のバージョンを対象としています。それは本当にAnyCPUです。

+0

だから、私は 'corflags'に頼るのがよいでしょうか? – HimBromBeere

+0

あなたはプロジェクトの設定に頼っているほうがよいでしょう。なぜあなたはこの質問をしているのか分かりません。 –

関連する問題