2012-01-04 21 views
2

Windows 7上でVS 2010でC#プログラムをコンパイルしてから、別の32ビットマシンでファイル(すべてビルドのbin \ Debugディレクトリから取得)を実行しています。C#プログラムを実行しているときにSystem.BadImageFormatExceptionが発生しました

Debugディレクトリのファイルには、このプログラムが依存するMicrosoft.Office.Project.Server.Library.dllファイルも含まれています。

VS 2010プロジェクトのビルド構成では、プラットフォームはx86に設定されています。それでも、32ビットマシンでは、System.BadImageFormatExceptionが発生します。

Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 
'Microsoft.Office.Project.Server.Library, Version=12.0.0.0, Culture=neutral, 
PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The module was expected to 
contain an assembly manifest. File name: 'Microsoft.Office.Project.Server.Library, 
Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' 

これはどのような理由がありますか?

+1

他の依存関係(GACにインストールされている可能性あり)は、開発マシンでは利用できますが、展開されたマシンでは使用できませんか? –

+0

System。*参照以外には、VS Studioプロジェクトの「参照」セクションの下にMicrosoft.Office.Project.Server.Libraryエントリしかありません – byneri

+0

ただし、依存関係に依存する可能性があります。私は他のプロジェクトで作成したDLLを使用する(幾分)大規模なプロジェクトをいくつか持っています。これらのDLLは他のDLL自体に依存していますが、「新しい」プロジェクトでは「従属」ではなく直近の依存関係のみが表示されるため、これらの依存関係が参照セクションに存在することはありません。これが機能するには、ターゲットマシンにProject Serverをインストール(再インストール)する必要があります。 –

答えて

6

私はまだそれがx86 v x64の問題だと思っています。実行ファイルは他のx64ライブラリに依存していますか?

+0

ああ、ビルドの設定をx86に変更してもbin \ x86 \ Debugディレクトリの代わりにbin \ Debugから古いファイルをコピーした – byneri

+0

+1、 x86/x64の不一致 –

+0

BadImageFormatExceptionは、x32とx64の違いを意味するものではありません。 – McKay

0

問題マシンの.NETフレームワークがビルドマシンと同じバージョンではない可能性があります。

+0

コンパイルマシンに.NET Framework 4.0があります。ターゲットマシンには、.NET Frameworkバージョン2.0 3.0および3.5があります。 – byneri

関連する問題