質問

Visual Studio 2008を使用してWindows 7 64ビットで開発しています.ILMERGEを使用して単一のDLLにマージするクラスライブラリのコレクションがあります。このマージされたDLLを使用しようとすると、

[ BADIMAGEFORTAXCEPTION ファイルまたはアセンブリをロードできませんでした'mymergeddll'またはその依存関係の1つ。誤った形式でプログラムをロードしようとしました。]

これを助けて探していて、MyMergeddllの各プロジェクトのビルドプロパティをターゲットx86に設定する必要があるように見えましたので、そうしました。 MyMergedDLLを参照しているWebサービスにMyMergedDLLをターゲットX86に参照しているWebサービス内のすべての非MSTestプロジェクトも設定します。私はまだこのエラーを得ています。

このブログエントリ< / a>信じられていること、私は行うことの結果としてこのエラーを得ることができます:

public class SpecificClass: BaseClass: where T : class { }
.

それは一般的な一般的なクラス制約を持つことです。ブログのエントリーは2007年からのものです。それでまだそれが適用されているかどうかはわかりません。私はあなたが私のプロジェクトですべての汎用クラスを追跡する前に問題が解決される前に問題があると思うのは、私は問題が私のプロジェクトで追跡する前にあなたが問題と思うことを望みました。

問題が解決しない場合、myMergeddllは署名された強い名前です。コンソールアプリケーションとWebサービスの両方でMyMergeGeDLLを使用しようとしています。私は、Webサービスを再構築するたびにIISが更新されているかどうかによって、物事がおそらく複雑なかどうかわかりません。コンソールアプリケーションを使用すると、リリースモードでビルドするとBadImageFormatExceptionが取得されているようです。

役に立ちましたか?

解決

私はそれを仕事に手に入れました、そして、私はそれが2つのことをすることからだと思います:

  1. MyMergeDLLは、コントロールする他のアセンブリを使用して構築されましたが、それらのアセンブリはターゲットx86に設定されていませんでした。X86をターゲットにしたアセンブリを再構築し、MyMergeDDLLを構成するアセンブリを再構築し、それらのアセンブルを再結合してMyMergeGeDLLの新しいコピーを作成しました。
  2. MyMergedDLLを使用しているコンソールアプリケーションは、デバッグモードではなくターゲットx86に設定されましたが、リリースモードはデバッグモードで動作しますが、リリースモードでBadImageFormatExceptionを指定します。
  3. 最初のものが必要ないかもしれません。リリースモードでは、MyMergeDDLLのコンシューマをターゲットx86に必要なだけだと思います。私は私が使用していたIlmergeのバージョンを理解することはできませんので、Microsoftのサイトで見つけることができる最新のMSIでそれを再インストールしました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top