Visual Studio 2008 を使用して Windows 7 64 ビットで開発しています。ILMerge を使用して単一の DLL にマージするクラス ライブラリのコレクションがあります。ただし、このマージされた DLL を使用しようとすると、
[ BadImageFormatException : ファイルまたはアセンブリ 'MyMergedDll' またはその依存関係の 1 つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。]
私はこれに関するヘルプを探していましたが、MyMergedDll の各プロジェクトで Build プロパティを x86 をターゲットに設定する必要があるように見えたので、そうしました。また、MyMergedDll を参照している Web サービスで、MSTest 以外のすべてのプロジェクトを x86 をターゲットに設定しました。ただし、まだこのエラーが発生しています。
このブログ エントリが信じられるとすれば、次の実行の結果としてこのエラーが発生する可能性があります。
public class SpecificClass: BaseClass: where T : class { }
つまり、ジェネリックにクラス制約があります。ただし、ブログのエントリは 2007 年のものなので、それが今も当てはまるかどうかはわかりません。プロジェクト内のすべてのジェネリック クラスを追跡して制約を確認する前に、StackOverflow から問題の原因について意見を求めました。
問題があれば、MyMergedDll は厳密な名前で署名されています。コンソール アプリケーションと Web サービスの両方で MyMergedDll を使用しようとしています。Web サービスを再構築するたびに IIS が更新されているかどうかによって、状況が複雑になるかどうかはわかりません。BadImageFormatException
コンソール アプリケーションでは、Release モードでビルドしたときにしか取得できないようです。