ほとんどのWindows 10(64ビット)システムで動作するアプリケーションがありますが、これと同じBadImageFormatExceptionを受け取っているコンピューターが6台あります。アプリケーションとライブラリはAnyCPUを対象としています。アセンブリからCOMオブジェクトを作成しようとすると、例外が発生します。
Could not load file or assembly 'InfoConnectCOM.Wrapper64.dll' or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)
ラッパーの名前に基づいて、x64アセンブリを参照しているように見えます。最近同じ方法でイメージングされたコンピューターは30台あり、この問題が発生したのは6台のみです。さらに、この問題が発生していない他の数百のWin10(64ビット)コンピューターがあります。
Private _system As Object
Private Const IC16AssemblyName As String = "InfoConnectCOM.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=13bff1b6907eadcf"
Private Sub CreateIC16SystemObject()
Dim assembly As Reflection.Assembly = Reflection.Assembly.Load(IC16AssemblyName)
Dim type As System.Type = assembly.GetType("Accmgr.AccmgrSystemWrapper")
_system = Activator.CreateInstance(type)
End Sub
異なるプラットフォーム上の異なるバージョンのソフトウェアで動作するコードが必要なため、アセンブリは動的にロードされます。
Stacktrace System.Reflection.TargetInvocationException
System.RuntimeTypeHandle.CreateInstance(type As RuntimeType, publicOnly As Boolean, noCheck As Boolean, canBeCached As Boolean&, ctor As RuntimeMethodHandleInternal&, bNeedSecurityCheck As Boolean&)
QCC.exe: N 00000
System.RuntimeType.CreateInstanceSlow(publicOnly As Boolean, skipCheckThis As Boolean, fillCache As Boolean, stackMark As StackCrawlMark&)
QCC.exe: N 00142
System.Activator.CreateInstance(type As Type, nonPublic As Boolean)
QCC.exe: N 00105
System.Activator.CreateInstance(type As Type)
QCC.exe: N 00012
IAT.AccMgr.Session.CreateIC16SystemObject()
QCC.exe: N 00060
IAT.AccMgr.Session.CreateSystemObject()
QCC.exe: N 00029
IAT.AccMgr.Session..ctor()
QCC.exe: N 00163
Stacktrace BadImageFormatException
System.Reflection.RuntimeAssembly._nLoad(fileName As AssemblyName, codeBase As String, assemblySecurity As Evidence, locationHint As RuntimeAssembly, stackMark As StackCrawlMark&, pPrivHostBinder As IntPtr, throwOnFileNotFound As Boolean, forIntrospection As Boolean, suppressSecurityChecks As Boolean)
QCC.exe: N 00000
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(assemblyRef As AssemblyName, assemblySecurity As Evidence, reqAssembly As RuntimeAssembly, stackMark As StackCrawlMark&, pPrivHostBinder As IntPtr, throwOnFileNotFound As Boolean, forIntrospection As Boolean, suppressSecurityChecks As Boolean)
QCC.exe: N 00457
System.Reflection.RuntimeAssembly.InternalLoadFrom(assemblyFile As String, securityEvidence As Evidence, hashValue As Byte[], hashAlgorithm As AssemblyHashAlgorithm, forIntrospection As Boolean, suppressSecurityChecks As Boolean, stackMark As StackCrawlMark&)
QCC.exe: N 00182
System.Reflection.Assembly.LoadFrom(assemblyFile As String, securityEvidence As Evidence)
QCC.exe: N 00056
System.Activator.CreateInstanceFromInternal(assemblyFile As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object[], culture As CultureInfo, activationAttributes As Object[], securityInfo As Evidence)
QCC.exe: N 00029
Accmgr.AccmgrSystemWrapper.CreateAccmgrSystemWrapper(installDir As String)
QCC.exe: N 00086
Accmgr.AccmgrSystemWrapper..ctor()
QCC.exe: N 00045
InfoConnectソフトウェアのアンインストールと再インストールを試みました。コードとライブラリを変更してx86をターゲットにすると、実行されます。ただし、x86をターゲットとするためにすべてのソフトウェアを再コンパイルする必要はありません。
これをトラブルシューティングし続ける方法、または少数のコンピューターのみが影響を受ける理由についてのアイデアはありますか?
ありがとう
関連記事
- ファイルまたはアセンブリ「MicrosoftAzureActiveDirectoryClientFramework」またはその依存関係の1つをロードできませんでした
- log4netを削除した後でも、ファイルまたはアセンブリ「log4net」またはその依存関係の1つをロードできませんでした
- ファイルまたはアセンブリ 'DocumentFormatOpenXmlをロードできませんでした:再び
- SystemIOFileNotFoundException:アセンブリ 'EntityFramework、Version = 6000、Culture = neutral、PublicKeyToken = b77a5c561934e089'をロードできませんでした
- DotNetNuke C# 'SystemIOFileNotFoundException':ファイルまたはアセンブリをロードできませんでした
- プラグインmaven-antrun-pluginまたはその依存関係の1つを解決できませんでした
- 「ファイルまたはアセンブリをロードできませんでした」後に、Fusionログにエラーが表示されない
- ファイルまたはアセンブリServiceStackInterfaces、Version = 4000、Culture = neutral、PublicKeyToken = e06fbc6124f57c43をロードできませんでした
- ファイルまたはアセンブリ「SystemPrivateCoreLib…」をロードできませんでした
- VBNETでdatgaridを介してセルの色を設定し、そのテキストを変更する方法
- VBNET MENUSTRIPは実行時にImageScalingを尊重しません
- VB NETスクロール可能なパネル内のオブジェクトの位置を見つける良い方法は何ですか?
- アニメーションスライディングフォームVBNet
- コンボボックスを使用して画像の背景色を変更し、データをデータグリッドビューに保存する
- 動的に作成されたExcelブックを開く
- vbnet winフォームのグリッドビューでビューを更新する方法は?
- 親コントロールを変更すると、Winform内のユーザーコントロールのデータバインドが失われる
- フォーム上のピクチャボックスへのドロップの実装
マシン上の唯一のC再頒布可能ライブラリは32ビットバージョンでした。 COMラッパーはCにあるため、mvscr120.dllをロードしようとしたときに、間違ったバージョンがプルされていました。修復により問題は解決しました。