2011-07-11 5 views
1

2008年から2010年に私のVisual Studioソリューションを変換しました。プロジェクトにはShDocVwへの参照があります。プログラムを実行するとBadImageFormatExceptionが発生します。グーグルはcorflagsと相互運用ライブラリを確認するために私を導い:VSアップグレード後のinteropライブラリのcorflagsの問題

corflags Interop.ShDocVw.dll 

Version : v2.0.50727 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 3 
ILONLY : 1 
32BIT  : 1 
Signed : 0 

案の定、32BITフラグがとても64ビットマシン上の任意のCPUとして構築された私のアプリケーションは、このライブラリをロードすることはできません設定されています。私がcorflags/32BITを実行すると、私は32BITフラグをオフにすることができ、すべて正常に機能します。問題は、このInteropライブラリがそのフラグを設定して生成される理由は何ですか?私はVS2008でこの問題を抱えていませんでしたが、これはアップグレード後に始まったばかりです。

さらに重要なことは、ビットをオフにするためにcorflagsを実行する必要がないように修正するにはどうすればよいですか?私はそれがおそらく私が非常によく理解していないいくつかのMSBuild-fuによると仮定します。とにかく何も見つけられませんでした。

答えて

2

問題が< PlatformTarget>をアップグレードした後タグは、特定の< PropertyGroups> C#プロジェクトファイルでとx86に、それは明らかに、デフォルトで設定されていないということです。したがって、これを修正するには、プロジェクトのProperties - > Buildタブに移動し、Platform TargetをAnyCPU以外に設定して保存します。今度はそれをAnyCPUに戻して保存してください。 < PlatformTarget>はAnyCPUの値でプロジェクトに書き込まれ、すべて正常です。

Here is where I found the answer.