問題タブ [badimageformatexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - .NETアセンブリ形式にサイズ制限はありますか?
私はこれまで経験したことのない興味深い問題に遭遇しました。Visual Studio2008SP1には大規模な実稼働ASP.NET3.5SP1 Webアプリプロジェクトがあり、Webサイト展開プロジェクトを使用してコンパイルおよび展開されます。昨日のチェックイン後、アプリがで重大な失敗を開始するまで、昨年はすべてが正常に機能していましたBadImageFormatException
。
問題のチェックインは特に特別なことは何も変更せず、エラーはアプリの変更されていない領域から発生しています。Reflectorを使用して、問題のあるメソッドを調べ、コードにガベージ文字列が含まれていることを確認しました(.NET Reflectorは漢字としてユーモラスに解釈しました)。これは複数のマシンで一貫して再現されているため、ハードウェアに関連しているようには見えません。
さらに詳しく調べたところ、展開中にaspnet_merge.exeへの入力として使用されたアセンブリにこれらのガベージ文字列が存在しなかったことがわかりました。
aspnet_merge.exe / Web配置プロジェクトの出力アセンブリのプロパティ:
- すべての出力を単一のアセンブリにマージします
- 個々のフォルダの出力をそれぞれのアセンブリにマージします
- すべてのページと制御出力を単一のアセンブリにマージします
- ページごとに個別のアセンブリを作成し、出力を制御します
Web配置プロジェクトのプロパティで、マージオプションを最初のオプション(「すべての出力を単一のアセンブリにマージする」)に設定すると、問題が発生しますが、他のすべてのオプションは完全に機能します。
私の質問:なぜこれが起こっているのか誰かが知っていますか?aspnet_merge.exeの機能にサイズ制限はありますか(結果としてマージされるDLLは約19.3 MBです)?WAPの出力のマージに関する他の既知の問題はありますか?
アセンブリ形式/aspnet_merge.exeの達人が、このような制限について知っていれば、私はそれが大好きです。25MBのアセンブリのように私には思えますが、大きなものですが、とんでもないことではありません。
.net - プラットフォームが同じでも「不正な形式のプログラムを読み込もうとしました」
64 ビット システムで 32 ビット アンマネージ DLL から関数を呼び出しています。私が得るものは次のとおりです。
BadImageFormatException: 不正な形式のプログラムを読み込もうとしました。(HRESULT からの例外: 0x8007000B)
最初はプロジェクトを Any CPU プラットフォームに設定していたので、両方を x86 に変更しましたが、このエラーはまだ発生しています。それは本当に私がこれについて知っている唯一の修正です。
DLL は、他のプログラム (ソースを持っていない) で使用できるため、破損していません。おそらく依存関係が見つからないのではないかと思いましたが、確認したところ、すべてそこにありました。さらに、その場合は a をスローしませんDllNotFoundException
か?
他に何ができますか?そして、「代わりに 64 ビットのアンマネージ DLL を使用してください」と言う前に、そうではないことを指摘させてください。;)
asp.net - 64ビットと32ビットの両方をサポートするWebバイナリをリリースしますか?ASP.NET
32ビットと64ビットの両方をサポートするアプリをリリースしたいと思います。私はelmahとSQLiteを使用しています。どちらのパッケージにも、32ビットと64ビット用に別々のバイナリがあります。32ビットと64ビットの両方のDLLを追加できません。bin / releaseフォルダーに異なるファイル名の32ビットと64ビットの両方のDLLを追加しようとしましたが、画像形式のエラーが発生します。(ディレクトリ内のDLLと32ビットを実行するシステムの両方で64ビットのWindowsサーバーで実行してテストしました)。
同じフォルダーを32ビットまたは64ビットとして実行できるようにアプリをリリースするにはどうすればよいですか?
c# - 「ResolveAssemblyReference」タスクは失敗し、System.BadImageFormatException が発生しますが、アセンブリはどこにも使用されていません。
アセンブリ「C:\Ora10g\bin\Zip.exe」に関するエラーが発生しています。問題は、このソリューションが Oracle で何も使用しないことです。プロジェクトのどこにも 10g への参照が 1 つも見つかりませんでした。これは、グループを去った別の人から受け継いだものです。彼はこの問題を抱えたことはありません。私のチームの別のメンバーは、以前にこれを取得したと言いましたが、10g のクライアント部分を再インストールすると修正されました。そのような幸運はありません。WinGrep を使用して、ソリューション フォルダ全体で "Ora10g" を検索しようとしましたが、そこにはありませんでした。
何か案は?この Oracle への誤った参照を取り除く方法がわかるまで、このソリューションを構築することはできません。
VS 2005 ソリューション。いくつかの WinForm アプリ、いくつかのクラス ライブラリ、および Web サービスが含まれています。メイン クラス ライブラリ プロジェクトでエラーが発生します。
エラーメッセージは次のとおりです。
c# - 32 ビット DLL をロードするときの BadImageFormatException、ターゲットは x86
確かに32ビットのDLL(FreeType)があります(ヘッダー:IMAGE_FILE_MACHINE_I386)。
DllImport を使用して、C# コードから使用したいと考えています。
アプリケーションのターゲットは x86、IntPtr.Size は 4、プロセスは 32 ビットです。
しかし、BadImageFormatException (HRESULT からの例外: 0x8007000B) が発生します。何が間違っている可能性がありますか?
もちろん、私は64ビットのWindows 7を使用しています。
oracle - Sql Server Reporting Services、64 ビット OS、および Oracle データソースでこの動作を見た人はいますか?
私は、Sql Server データ ソースと Oracle 10g データ ソースの両方でクエリを実行する Sql Server Reporting Services ソリューションに取り組んでいます。私の開発ボックスは、Sql Server 2008R2 を搭載した Windows 7 64 ビットであり、開発のためにそのシステムで IIS7 と SSRS をホストしています。レポートの設計には VS.NET を使用します。
SSRS が 64 ビット プロセスでの 32 ビット Oracle クライアントのロードについて不平を言うレポートを実行すると、エラーが発生します。それを解決する方法については、多くのスレッドがあります。問題は、それらはすべて、私が行っている 64 ビットの Oracle クライアントがあることを確認することです。私が持っている奇妙な一連のイベントは次のようになります。
- 最初の Oracle データソースを作成し、レポートを接続します (動作します)。
- Oracle データソース接続を編集します (BadImageFormatException 32bit/64bit エラー メッセージで動作を停止します)
- Oracleクライアントをアンインストールして再インストールします(動作します)
- Oracle 接続を再度編集します (BadImageFormatException 32bit/64bit エラー メッセージで動作を停止します)。
接続文字列を変更するたびにクライアントを再インストールしないと、完全に途方に暮れます。誰もこの種の行動を見たことがありますか?もしそうなら、私は一体何を間違っているのですか?
.net - Windows 7 64 の .NET ILMerged DLL での BadImageFormatException
Visual Studio 2008 を使用して Windows 7 64 ビットで開発しています。ILMerge を使用して単一の DLL にマージするクラス ライブラリのコレクションがあります。ただし、このマージされた DLL を使用しようとすると、
[ BadImageFormatException : ファイルまたはアセンブリ 'MyMergedDll' またはその依存関係の 1 つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。]
私はこれに関するヘルプを探していましたが、MyMergedDll の各プロジェクトで Build プロパティを x86 をターゲットに設定する必要があるように見えたので、そうしました。また、MyMergedDll を参照している Web サービスで、MSTest 以外のすべてのプロジェクトを x86 をターゲットに設定しました。ただし、まだこのエラーが発生しています。
このブログ エントリが信じられるとすれば、次の実行の結果としてこのエラーが発生する可能性があります。
つまり、ジェネリックにクラス制約があります。ただし、ブログのエントリは 2007 年のものなので、それが今も当てはまるかどうかはわかりません。プロジェクト内のすべてのジェネリック クラスを追跡して制約を確認する前に、StackOverflow から問題の原因について意見を求めました。
問題があれば、MyMergedDll は厳密な名前で署名されています。コンソール アプリケーションと Web サービスの両方で MyMergedDll を使用しようとしています。Web サービスを再構築するたびに IIS が更新されているかどうかによって、状況が複雑になるかどうかはわかりません。BadImageFormatException
コンソール アプリケーションでは、Release モードでビルドしたときにしか取得できないようです。
templates - マネージ C++ のアンマネージ C++ テンプレートは悪いイメージをスローしますか?
アンマネージド C++ dll と動的にリンクするマネージド C++ dll があります。マネージ C++ は、アンマネージ dll の抽象インターフェイスからいくつかのアンマネージ クラスを派生させます。
これはうまくいきます。アンマネージ dll の ICustomer.h
マネージ C++ の LocalCustomer.h
LocalCustomer はマネージド dll で使用されます。アンマネージ dll の関数に渡すことができ、すべて正常に動作します。
これが問題です。テンプレートを公開するインターフェイスを実装しようとすると、起動時に STATUS_INVALID_IMAGE_FORMAT が発生します。
実行されません。アンマネージ DLL で
マネージ C++ dll で
テンプレートのオーバーライド GetOrders を絞り込みました。マネージ dll にコードがあると、「アプリケーションを正しく開始できませんでした (0xc000007b)」というダイアログが開きます。これは、マネージ ローダーによって STATUS_INVALID_IMAGE_FORMAT HRESULT がスローされるだけです。コードを削除すると、実行できるようになります。 ? マネージ DLL で使用できないのはなぜですか。
もう 1 つの手がかりです。これが気晴らしであるかどうかはわかりません..私は 32 ビット アプリをコンパイルし、Win7 x64 で実行しています。私が言ったように、テンプレートが dll をアンマネージドからマネージドに渡らない限り、問題なく動作します。
私を殺すのは、マネージド dll 内に完全に存在するいくつかのアンマネージド C++ テンプレートがあり、それらが正常に動作することです。私に悪いイメージを与えているように見えるのは、dllの間を横切るテンプレートだけです。
windows-services - System.BadImageFormatExceptionを受信するGCCコンパイル済み.exeのInstallUtill
GCCでコンパイルされた.exeをWindowsのサービスとして使用しようとしています。私が研究したことから、私はすべきです:
これを行おうとすると、次のようなメッセージが表示されます。
これは、プログラムがGCCを使用してコンパイルされ、コンパイルにいくつかの.aファイルを使用したためだと感じています。
私が見るところ、System.BadImageFormatExceptionは通常、ある種の悪いマニフェストによって引き起こされます。誰かがここで私を助けることができるでしょうか?