-4

C# Windows Forms でプログラムを作成しました。シンプルなビルド ソリューションを使用してプログラムをビルドできます。構成マネージャーで、x86 プロセッサに設定しました。Visual Studio 2012 を使用しています。64 ビット マシンを使用しています。フォームは 64 ビット サーバーで実行できます。32 ビット サーバーでフォームを実行すると、単に「file.exe は有効な win32 アプリケーションではありません」というアプリケーション エラーが表示されます。

4

1 に答える 1

0

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」に設定することをお勧めします。

于 2013-06-27T20:02:25.923 に答える