32ビットコンピュータで正常に動作する.NET Framework 2.0を使用してC#アプリケーションを開発しました。しかし、64ビット環境でアプリケーションを実行するとクラッシュします。64ビット環境で32ビット.NETアプリケーションを実行するにはどうすればよいですか?
私のアプリケーションを64ビット環境で実行する必要があります。
どうすればよいですか?
32ビットコンピュータで正常に動作する.NET Framework 2.0を使用してC#アプリケーションを開発しました。しかし、64ビット環境でアプリケーションを実行するとクラッシュします。64ビット環境で32ビット.NETアプリケーションを実行するにはどうすればよいですか?
私のアプリケーションを64ビット環境で実行する必要があります。
どうすればよいですか?
32ビット専用のライブラリを参照していない限り(Jet DBドライバは一例です)、アプリケーションを32ビットのみにコンパイルするようにコンパイラに指示していない限り、実行する必要があります。
クラッシュは何を言いますか?
コンパイラが32ビットのみをコンパイルするように指示されている場合、実際には*動作するはずです。実際問題としてはおそらく許容可能な修正です。 – harms
プロジェクトのビルド設定で、プラットフォームターゲットを任意のCPUではなくx86に設定します。これは、プロジェクトが64ビットでは利用できない32ビットサブシステムへの "隠された"依存関係を持つ問題を解決します。あなたのアプリケーションは64ビットWindows上で32ビットのsusbsystemで実行されます。
64ビットWindows上の32ビットライブラリに対して実行されるCPUの代わりに、x86用にコンパイルできます。
64ビットWindowsにインストールする場合は、64ビット版の32ビットライブラリを交換します。いくつかのSqlite dllの中には32/64ビットに特化したものがあります。
+1この単純な解決策は、x86とx64のビルドを並行してサポートする必要がなくなりました!私は何度もupvoteできますように願っています! –
私は同じ問題に直面しました。私のケースでは、私のアプリケーションのメインアセンブリ(.exe)を "x86"のためにコンパイルするだけで十分でした。他のアセンブリ(.dll)は "任意のCPU"でコンパイルされます。
私たちのアプリケーションは、32Bitと64Bitシステムでうまく動作します。
Windowsの場合は、CorFlags変換ツール(CorFlags.exe)を使用します。この方法でアプリケーション/ dllを32/64ビット空間で実行するように強制することができます。詳細および使用例はhttp://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspxです。
Windows/ASP.NETアプリケーションですか?
これはASP.NETアプリケーションの場合です。同時に32/64ビットモードのみを実行することができます。
ケース1. IISのアプリケーションプールでEnable32bitApplication
にする必要があります。 その後、IISをリセットします。
ケース2. regeditで対応するDLLを確認します。
それがWindowsベースの場合は、Visual Studioのプロンプトから次のコマンドを実行し、
CorFlags.exe TheApp.exe /32BIT+ //Enables 32 bit application.
ここでは、あなたが再コンパイルを避けるために探している場合の素敵なソリューションであることが見えるものです。各ターゲットマシンに変更が必要であることに注意してください。あなたは64ビットマシンを持っていると は、32ビットCLRで動作する.NETアプリケーションを実行したい場合は
あなたのマシン
セットに .NETフレームワークに変更を加える必要があります。NETフレームワークは
は、コマンドプロンプトを開き
この コマンドによってモードWOWでCLRをロードし、このコマンドを入力するC:\ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727のLdr64.exe \ SetWow
これで、.NET 32ビットCLRだけを使用するアプリケーションを実行できるはずです。
デフォルト64ビットのフレームワークの実行に戻す
C:\ WINDOWS \ Microsoft.NET \ Framework64 \ V2.0.50727 Ldr64.exe \ Set64
(source)
上記のFredrik Leijonの答えを拡大するだけで、これはあなたが後になったことだと思います。
32ビット環境でアプリケーションを実行するために、64ビットと32ビットの両方のウィンドウが表示されます。
あなたの「リリース」設定で同じことをするためのメモ。
これは、順番に次のようにピックアップするMSBuildのためのあなた*の.csprojファイルを更新します(以下<PlatformTarget/>
要素を確認してください):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
私たちは、それよりもむしろ、より多くの情報が必要になります。 P/Invokeを使用していますか?あなたはコードの特定の領域にそれを分離しましたか? –