C# Windows Forms でプログラムを作成しました。シンプルなビルド ソリューションを使用してプログラムをビルドできます。構成マネージャーで、x86 プロセッサに設定しました。Visual Studio 2012 を使用しています。64 ビット マシンを使用しています。フォームは 64 ビット サーバーで実行できます。32 ビット サーバーでフォームを実行すると、単に「file.exe は有効な win32 アプリケーションではありません」というアプリケーション エラーが表示されます。
1 に答える
Visual Studio ソリューション エクスプローラーで、プロジェクトを右クリックし、[プロパティ] を選択します。[ビルド] タブで、[プラットフォーム] が x86 に設定されていることを確認します。
プログラムの先頭にコードを追加して、32 ビット プロセスで実行されているかどうかを確認します。
Console.WriteLine("64-bit process = {0}", Environment.Is64BitProcess);
(GUI アプリがある場合は、その情報を含むメッセージ ボックスを表示します。)
それは言うべきfalse
です。と表示されない場合はfalse
、32 ビット アプリケーションを作成していません。
表示されfalse
、アプリケーションが 32 ビット マシンで実行されない場合は、間違ったファイルをコピーしている可能性があります。次の行を追加します。
Console.WriteLine(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
これにより、実行中のファイルがどこにあるかがわかります。そこからサーバーにコピーします。
「file.exe は有効な win32 アプリケーションではありません」というメッセージが表示されます。確かに、それが報告する「file.exe」はアプリケーションの名前であり、アプリケーションが依存している他のexeやdllではありませんか?
このアプリケーションを常に 32 ビットで実行しても問題ない場合は、プラットフォームを x86 に設定したままにしても問題ありません。ただし、64 ビットをサポートするマシンで 64 ビットとして実行する場合は、「任意の CPU」に設定することをお勧めします。