問題タブ [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.
wcf - WCF コンテキストでの BadImageFormatException
私のシナリオは次のとおりです(Win7、VS2010、.NET 4.0):
「Any CPU」用にコンパイルされた外部会社からの .NET アセンブリがあります (corflags.exe で検証済み)。このアセンブリは、外部企業からもネイティブ dll を読み込みます。このネイティブ dll には、x86 と x64 の 2 つのバージョンがあります。両方ご用意しております。
コンソール アプリケーションを作成するときは、.NET アセンブリを追加し (ネイティブ DLL の 1 つが .NET アセンブリによって検出されることを確認しながら)、その .NET ライブラリからクラスの 1 つのインスタンスを作成し、プログラムを開始します。大丈夫。
ただし、WCF サービス内でまったく同じ手順を実行すると、BadImageFormatException が発生します。明らかなことは、ターゲットプラットフォームでエラーを検索するか(「Any CPU」、「x86」、「x64」を試しました)、ネイティブDLLを交換しようとしています(x86とx64の両方を試しました)が、それは役に立ちません. ところで、すべての組み合わせを試しました...
問題が何であるかを知っている人はいますか?
ラース
PS: WcfSvcHost と IIS WCF ホストで発生した BadImageFormatExceptionを読みました。著者が述べているように、WcfSvcHost.exe を 32BIT としてフラグ付けすることで同様の問題を解決しましたが、WcfSvcHost.exe は厳密な名前が付けられているため、辞任できません。彼がどうやってそれを機能させたのかわからない...
.net - アンマネージ コードがある場合の BadImageFormatException の回避
Visual Studio からサービスを実行しようとすると、常に BadImageFormatException をスローする Web サービスがあります。 別の質問に対するこの回答では、DLL に対して peverify を実行して、問題があるかどうかを確認することを提案しました。私の Web サービスの DLL は問題ありませんが、Web サービスは ILMerged アセンブリに依存しており、エラーがあります。
[IL]: エラー: [C:\blah\MyILMergedAssembly.dll: 暗号化
Utils.SecureStringExtensions::SecureEquals][オフセット 0x00000055][アンマネージド ポインターが見つかりました] [アンマネージド ポインターが予期されました] スタックに予期しない型がありました。
[IL]: エラー: [C:\blah\MyILMergedAssembly.dll: 暗号化
Utils.SecureStringExtensions::SecureEquals][オフセット 0x0000005D][アンマネージド ポインターが見つかりました][予期されたアンマネージド ポインター] スタックに予期しない型があります。
[IL]: エラー: [C:\blah\MyILMergedAssembly.dll: 暗号化
Utils.SecureStringExtensions::SecureEquals][offset 0x0000007E] アンマネージ ポインターは検証可能な型ではありません。
3 エラー .\MyILMergedAssembly.dll の検証中
(188警告)
これらは、 MyILMergedAssemblyのMarshal
とでの使用に起因すると思いますが、それを行うすべての場所で、メソッドを として宣言しています。peverify が与えるエラーを取り除くにはどうすればよいですか? また、できれば Web サービスを実行しようとしたときに表示される BadImageFormatException を取り除くにはどうすればよいでしょうか?IntPtr
unsafe
編集: ILMerge を使用して、安全でないコードを含むアセンブリをマージできないようです。そのため、Web サービスで MyILMergedAssembly の個々の DLL をすべて参照するようにしましたが、それでも BadImageFormatException が発生します。これで、個々のアセンブリの 1 つで例外が発生します。その個々のアセンブリで peverify を実行すると、次のようになります。
[IL]: エラー: [C:\blah\Connection.dll : 接続
.ConnectionBase::.ctor] [HRESULT 0x80070002] - 指定されたファイルが見つかりません。
それConnectionBase
が参照しているクラスは Connection.dll にあります。または、クラスが Connection 名前空間/プロジェクトで定義されているため、少なくともそうあるべきです。接続のビルド オプションで [安全でないコードを許可する] がオンになっています。ConnectionBase
参照している可能性のあるコンストラクターは、としてマークされていinternal
ます。
編集:安全でないコードで DLL を使用する Web サービス プロジェクトで、「安全でないコードを許可する」をチェックしてみました。compilerOptions="/unsafe"
また、system.codedom > compilers > compiler ノードの Web サービスの Web.config ファイルに追加してみました。ただし、Web サービスを実行すると、次のようなページが表示されます。
ファイルまたはアセンブリ '接続' またはその依存関係の 1 つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。
badimageformatexception - BadImageFormatException
Win 7 Professional 64ビットシステムにVS 2008があり、データベースは同じマシンにインストールされたOracle 11g r2です。
データ ソース構成ウィザード --> 新しい接続データ ソース: Oracle データベース (Oracle クライアント) サービス名、ユーザー名、およびパスワードを入力した後に [テスト接続] をクリックすると、次のエラーが表示されます。
Oracle クライアント ライブラリをロードしようとすると、BadImageFormatException がスローされました。この問題は、32 ビットの Oracle クライアント コンポーネントがインストールされている状態で 64 ビット モードで実行している場合に発生します。
-- この場合は必要がないため、Oracle クライアントをインストールしていません。ラップトップ Win 7 32 ビット Oracle 11g r2 32 ビットで同じ設定を行っており、すべて正常に動作しています。
この問題の解決策があれば教えてください。
.net-3.5 - Windows 7 64 ビットで .NET アプリケーションがクラッシュする
Visual Studio 2010 と.NET Framework 3.5を使用してアプリケーションを作成し、セットアップ インストーラーを作成しました。
Visual Studio 2010 では、プラットフォームとして「任意の CPU」を選択したため、64 ビットと 32 ビットの両方の Windows 7 OS で実行できます。
Windows 7 64 ビットにインストールすると、正常にインストールされますが、アプリケーションを開こうとすると、次のダンプが表示されます。
説明: 動作を停止しました
問題の署名: 問題イベント名: CLR20r3 問題の署名 01: elanguidescd.mediaplayer.exe 問題の署名 02: 1.0.0.0 問題の署名 03: 4e295e12 問題の署名 04:
System.Windows.Forms 問題の署名 05: 2.0.0.0 問題の署名 06: 4d8c1991問題の署名 07: 19bb 問題の署名 08: 1a 問題の署名 09:
System.BadImageFormatException OS バージョン: 6.1.7600.2.0.0.256.1
ロケール ID: 1033プライバシーに関する声明をオンラインで読む:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409オンラインのプライバシーに関する声明が利用できない場合は、オフラインでプライバシーに関する声明をお読みください: C:\Windows\system32\en-US\erofflps.txt
nhibernate - NHibernate で System.Data.SQLite BadImageFormatException が発生し、スタンドアロンの場合は正常に動作する
.NET 4および32ビットのバージョン= 1.0.74.0のSQLiteでNHibernateを使用しようとしました。私は 64 ビットの WIN7 を使用していますが、アプリケーションを x86 モード (VS2010 Express のデフォルト) でビルドしています。
同じ SQLite をスタンドアロン アプリケーションとして使用すると正常に動作しますが、NHibernate で使用しようとするとスローされますBadImageFormatExcepion
少しNHibernateをデバッグしたところ、次のステートメントで例外がスローされました
誰かが解決策を知っている可能性はありますか? VS Express でデフォルト モードを使用しているからですか? 他の方法を使用してプラットフォームを指定する必要がありますか? sqlite 用の他の dll をダウンロードしてみますか?
SOに関する他の回答をいくつか確認しましたが、app.configにこれを追加するのが最善でした:
nunit - X86ビルドのNUNITは、dllのロード時にSystem.BadImageFormatExceptionをスローします
こんにちは私はC.dllをロードするためにnunit-x86.exeを使用しようとしています。このCDllは、同じインターフェイスを呼び出すNet.Dllと同じです(別のアンマネージDLLを介して)。nunit-x86.exeを使用して.NetバージョンのDLLを実行しても問題はありませんが、Cバージョンをnunitにロードできません。
プロジェクト構成をwin32からx86に変更しました。これにより、ドットネットdllプロジェクトがx86に変更されますが、Cdllにはwin32オプションしかありません。テストフィクスチャなどを含むCdllは、正常にコンパイルおよびリンクされます
以下はnunitからの例外です
.net - BadImageFormatException 0x80131124 (インデックスが見つかりません) とはどういう意味ですか?
次のエラー メッセージが表示され、プログラムがクラッシュすることがあります。
System.Reflection.TargetInvocationException: 呼び出しのターゲットによって例外がスローされました。---> System.BadImageFormatException: インデックスが見つかりません。(HRESULT からの例外: 0x80131124)
関連する可能性のある詳細:
- C# 4 / .NET 4
- Windows 7 64 ビット OS。EXE は任意の CPU 用です (つまり、64 ビット モードです)。
- これは、カスタム オブジェクトの 1 つの構築中にスローされます。このオブジェクトを子 AppDomain に作成しているので、着信要求を処理することによってロードされる DLL をアンロードできます。
- http://blogs.msdn.com/b/yizhang/から、HRESULT 0x80131124 = CLDB_E_INDEX_NOTFOUND が表示されます。
- これが発生するのを最近見ただけで (このアプリに 3 年間取り組んでいます)、今でも、Red Gate Performance Analyzer または Red Gate Memory Analyzer を使用してツールのプロファイリングを試みたときにのみ発生します。
私の質問は
- これは何を意味するのでしょうか ?
- 「インデックスが見つかりません」とは何ですか?
- これを修正するにはどうすればよいですか?
どうもありがとう。
アップデート
ANY の EXE をターゲットにする代わりに、強制的に x64 にしました。問題はまだ発生します。
c# - SQLiteデータベースを作成しようとしたときのBadImageFormatException
私は非常に奇妙な問題を抱えており、wwwで見つかったいくつかの解決策を試しましたが、それでも問題は解決しませんでした。
数日前、メタファイルがRAMのほぼ全容量を使用していたため、メタファイルからデータベースに切り替えることにしました。プログラムを実行するためだけにユーザーにデータベースサーバー全体を実行させたくないので、私の選択はSQLiteに行きました。
そこで、SQLiteをラップトップにロードし、それをプロジェクトに参照して、開発を続けました。すべてがうまくいきました。家に着いたら、デスクトップPCの電源を入れて、開発を続けたいと思いました(プロジェクト全体が常にドロップボックスと同期しています)。しかし、コードがリージョンに到達するとすぐに、SQLiteが呼び出した場所でBadImageFormatExceptionが発生しました。
Googleからアプリケーションをx86に切り替えるように言われましたが、クラッシュします...
どちらのシステムもx64Windows7です。
dllを/bin/ Debug / lib /x86/と/bin/ Debug / lib / x64 /に移動し、このソリューションで提供されているように.csprojファイルを編集しましたが、まったく機能しません...
同じソリューション/プロジェクトでVisualStudioを使用して32ビットと64ビットの両方をターゲットにする
私の.csprojファイルは次のようになります。
前もって感謝します
exception - Unity アプリケーション ブロック: 解決中に例外が発生しました: BadImageFormatException
アプリケーションで Unity 2.1 を使用していますが、1 つの解決シナリオのタイトルにエラーが表示されます。どこを見たらいいのかわからない。
- Windows 7 64ビットを実行しています
- 32 ビット アプリケーションが有効になっている
- 「Any CPU」と「x64」に対してビルドを試みました
この問題は 64 ビット アーキテクチャに関連していないようです。どんな援助でも大歓迎です!
シナリオ
コード
Unity.config
ProductManager + インターフェース
OrderManager + インターフェイス
StackTrace で更新します。
System.Runtime.CompilerServices.RuntimeHelpers._CompileMethod (IRuntimeMethodInfo メソッド) で System.Reflection.Emit.DynamicMethod.CreateDelegate (Type delegateType) で Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.GetBuildMethod() で Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlanCreatorPolicy.CreatePlan (IBuilderContext コンテキスト、NamedTypeBuildKey buildKey) Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext コンテキスト) Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext コンテキスト) で Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t、Object)既存、文字列名、IEnumerable`1 resolverOverrides)
c# - NUnitプロジェクトによって引き起こされたSystem.BadImageFormatException
みなさん、良い一日を。私は仕事で一日中同じ問題を抱えていて、下がる新しい道を見つけるのに苦労しています。
ソリューションがサーバー上に構築されると、次のエラーが発生します。ソリューション内のすべてのテストの実行/デバッグに問題はなく、正常にビルドされます。サーバーと私のPCはどちらもx64です。私は役に立たないことがわかった多くのアドバイスに従いました。
すべての構成で、ソリューション内のすべてのプロジェクトのプラットフォームターゲットをx86に設定しました。
すべての違いを生む可能性のあるnunit-console-x86.exeがあることは知っていますが、コードのどこでこれを指定するかはわかりません。
私はインターネットの先駆者であることに気づいてください。何かを逃してしまった場合はお詫び申し上げます。
System.BadImageFormatException:ファイルまたはアセンブリを読み込めませんでした
'Spin.TradingServices.DataAcquisition.Test.NUnit、Version = 1.0.12103.2060、Culture = neutral、PublicKeyToken=null'またはその依存関係の1つ。間違った形式のプログラムを読み込もうとしました。
ファイル名:'Spin.TradingServices.DataAcquisition.Test.NUnit、Version = 1.0.12103.2060、Culture = neutral、PublicKeyToken = null'サーバースタックトレース:System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName、String codeBase、Evidence assemblySecurity、RuntimeAssembly locationHint、StackCrawlMark&stackMark、Boolean throwOnFileNotFound、Boolean forIntrospection、BooleansuppressSecurityChecks)at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName AssemblySecurity、StackCrawlMark&stackMark、Boolean forIntrospection、BooleansuppressSecurityChecks)at System.Reflection.Assembly.Load(AssemblyName assemblyRef)at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path)at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName 、ブールautoSuites)at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName、String testName、ブールautoSuites)at NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage package)at NUnit.Core.TestSuiteBuilder.Build(TestPackage package)at NUnit.Core.SimpleTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package )at NUnit.Core.ProxyTestRunner.Load(TestPackage package)at NUnit.Core.RemoteTestRunner.Load(TestPackage package)at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object []&outArgs)at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)TestSuiteBuilder.Build(TestPackage package)at NUnit.Core.SimpleTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package)atNUnit.Core.RemoteTestRunner。 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object []&outArgs)at System.Runtime.Remoting.MessagingでLoad(TestPackage package)。 StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)TestSuiteBuilder.Build(TestPackage package)at NUnit.Core.SimpleTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package)atNUnit.Core.RemoteTestRunner。 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object []&outArgs)at System.Runtime.Remoting.MessagingでLoad(TestPackage package)。 StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)Load(TestPackage package)at NUnit.Core.RemoteTestRunner.Load(TestPackage package)at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object [] &outArgs)at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)Load(TestPackage package)at NUnit.Core.RemoteTestRunner.Load(TestPackage package)at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object [] &outArgs)at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)
[0]で再スローされた例外:System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg、IMessage retMsg)at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData、Int32 type)atNUnit.Core。 TestRunner.Load(TestPackage package)at NUnit.Util.TestDomain.Load(TestPackage package)at NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions options)at NUnit.ConsoleRunner.Runner.Main(String [] args)
WRN:アセンブリバインディングログがオフになっています。アセンブリバインドの失敗のログを有効にするには、レジストリ値[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)を1に設定します。注:アセンブリのバインドの失敗のログには、パフォーマンスの低下があります。この機能をオフにするには、レジストリ値[HKLM \ Software \ Microsoft \ Fusion!EnableLog]を削除します。
http://app1017-build.oy.gb.sportingindex.com:8080/job/TradingServices.DataAcquisition-Dev/ws/DataAcquisition/build.proj(86,5):エラーMSB6006:「nunit-console.exe」が終了しましたコード-100で。Done Building Project "(デフォルトのターゲット)-失敗しました。
ビルドに失敗しました。
注意: Hudsonでのビルドを元に戻し、ファイルをより段階的に再コミットするようになりました。これがどうなるかについて報告します。残念ながら、これに数人の頭を巻き込んでみましたが、役に立ちませんでした。恥!
更新 しばらくこのページに戻っていませんが、さまざまな解決策があるようです。私がそれらすべてを答えとしてマークすることができれば、私はそうするでしょう!ここで自分の道を見つけた人は、おそらく各オプションに同等のクレジットを与える必要があります。