10

32 ビット COM dll をロードする C# アプリケーションを構築しています。コンパイルされたアプリケーションは 32 ビット Windows では正常に動作しますが、32 ビット COM をロードできないため、64 ビット Windows では barfs が動作します。VC# 2008 Express Edition で 32 ビット ビルド ターゲットを設定する方法はありますか?

または、 AnyCPUビルド ターゲットにコンパイルされた .NET アプリケーションを強制的に 64 ビット Windows で 32 ビット モードで実行する方法はありますか?

4

2 に答える 2

26

後世のために、ここにリンクされているフォーラム投稿エイドリアンがあります:

VC#Expressでは、このプロパティはありませんが、どこを見ればよいかがわかっている場合は、x86構成を作成できます。

手順の長いリストのように見えますが、これらがどこにあるかがわかれば、はるかに簡単です。VC#Expressしか持っていない人なら、おそらくこれが便利だと思うでしょう。Configuration Managerについて理解すれば、次回ははるかに直感的になります。

  1. VC#Express 2005で、[ツール]->[オプション]に移動します。
  2. [オプション]ダイアログの左下隅にある[すべての設定を表示する]チェックボックスをオンにします。
  3. 左側のツリービューで、[プロジェクトとソリューション]を選択します。
  4. 右側のオプションで、[高度なビルド構成を表示する]チェックボックスをオンにします。
  5. [OK]をクリックします。
  6. [ビルド]->[構成マネージャー...]に移動します。
  7. プロジェクトの横にある[プラットフォーム]列で、コンボボックスをクリックして["]を選択します。
  8. 「新しいプラットフォーム」設定で、「x86」を選択します。
  9. [OK]をクリックします。
  10. [閉じる]をクリックします。

これで、x86構成になりました。やさしい!:-)

また、ConfigurationManagerを使用してAnyCPUプラットフォームを削除することをお勧めします。32ビットのネイティブDLLに依存関係がある場合(間接的な依存関係であっても)、これは本当に望ましくありません。

于 2009-09-09T23:28:26.837 に答える
12

VS Express の UI で明示的に 32 ビットに設定することはできませんが、明らかに (手元にあるのは Professional バージョンしかありません) 少し設定するだけで設定できます。このフォーラムの投稿には、その方法の詳細が記載されています。

また、 .Net Framework SDKに付属のCorFlagsツールを使用して、コンパイル済み出力を 32 ビットとして実行するように設定することもできます。CorFlags を使用して 32 ビット フラグを設定するには、コマンド ラインから次のコマンドを実行します。

CorFlags.exe /32BIT+ yourapp.exe

これにより、exe のヘッダーにフラグが設定され、32 ビットで実行する必要があることを .Net に通知します。

于 2009-09-04T23:45:04.003 に答える