问题标签 [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.

0 投票
1 回答
922 浏览

wcf - WCF 上下文中的 BadImageFormatException

我的情况如下(Win7、VS2010、.NET 4.0):

我有一个外部公司为“任何 CPU”编译的 .NET 程序集(使用 corflags.exe 验证)。该程序集也从外部公司加载本机 dll。这个原生 dll 有两个版本 - x86 和 x64。我两个都有。

当我创建控制台应用程序时,添加 .NET 程序集(同时确保 .NET 程序集可以找到本机 DLL 之一),从该 .NET 库中创建一个类的实例并启动程序一切都是美好的。

但是,当我在 WCF 服务中执行完全相同的步骤时,我得到了 BadImageFormatException。现在显而易见的是在目标平台中搜索错误(我尝试了“Any CPU”、“x86”、“x64”)或尝试交换本机 DLL(我尝试了 x86 和 x64),但这无济于事. 顺便说一句,我尝试了所有组合...

有谁知道问题可能是什么?

拉斯

PS:我阅读了 WcfSvcHost 和 IIS WCF 主机遇到的 BadImageFormatException,正如作者所说,他通过将 WcfSvcHost.exe 标记为 32BIT 解决了类似的问题,但 WcfSvcHost.exe 的名称很强,所以我不能辞职。不知道他是如何让它工作的......

0 投票
1 回答
1470 浏览

.net - 存在非托管代码时避免 BadImageFormatException

我有一个 Web 服务,每当我尝试从 Visual Studio 运行该服务时,它都会引发 BadImageFormatException。 This answer to another question建议对 DLL 运行 peverify 以查看是否有任何问题。虽然我的 web 服务的 DLL 很好,但 web 服务依赖于一个 ILMerged 程序集,它确实有错误:

[IL]:错误:[C:\blah\MyILMergedAssembly.dll:加密

Utils.SecureStringExtensions::SecureEquals][offset 0x00000055][found unmanaged pointer] [expected unmanaged pointer] 堆栈上的意外类型。

[IL]:错误:[C:\blah\MyILMergedAssembly.dll:加密

Utils.SecureStringExtensions::SecureEquals][offset 0x0000005D][found unmanaged pointer][expected unmanaged pointer] 堆栈上的意外类型。

[IL]:错误:[C:\blah\MyILMergedAssembly.dll:加密

Utils.SecureStringExtensions::SecureEquals][offset 0x0000007E] 非托管指针不是可验证的类型。

3 验证 .\MyILMergedAssembly.dll 的错误

(188 个警告)

我认为这些源于我在 MyILMergedAssembly 中的使用Marshal和使用IntPtr,但在我这样做的任何地方,我都将方法声明为unsafe. 我怎样才能摆脱 peverify 给出的错误,并希望摆脱当我尝试运行我的 Web 服务时出现的 BadImageFormatException?

编辑:看起来我可能无法使用 ILMerge 来合并具有不安全代码的程序集。所以我尝试让我的 Web 服务引用 MyILMergedAssembly 中的所有单个 DLL,但我仍然得到一个 BadImageFormatException。现在它给了我一个单独的程序集的例外。当我在那个单独的程序集上运行 peverify 时,我得到:

[IL]:错误:[C:\blah\Connection.dll:连接

.ConnectionBase::.ctor] [HRESULT 0x80070002] - 系统找不到指定的文件。

它所引用的ConnectionBase类就在 Connection.dll 中,或者至少应该是,因为该类是在 Connection 命名空间/项目中定义的。Connection 在其构建选项中选中了“允许不安全代码”。ConnectionBase它可能引用的构造函数被标记为internal

编辑:我尝试在使用带有不安全代码的 DLL 的 Web 服务项目中检查“允许不安全代码”。我还尝试compilerOptions="/unsafe"在 system.codedom > compilers > compiler 节点中添加 Web 服务的 Web.config 文件。但是,当我运行 Web 服务时,我仍然会得到一个包含以下内容的页面:

无法加载文件或程序集“连接”或其依赖项之一。试图加载格式不正确的程序。

0 投票
3 回答
1545 浏览

badimageformatexception - 坏图像格式异常

我在 Win 7 Professional 64 位系统上安装了 VS 2008,数据库是安装在同一台机器上的 Oracle 11g r2。

在 Data Source Configuration Wizard --> New Connection Data Source: Oracle Database (Oracle Client) 输入服务名称、用户名和密码后单击测试连接时,出现以下错误:

尝试加载 Oracle 客户端库会引发 BadImageFormatException。在安装了 32 位 Oracle 客户端组件的 64 位模式下运行时会出现此问题。

-- 我没有安装 oracle 客户端,因为在这种情况下不需要,我在笔记本电脑 Win 7 32bit Oracle 11g r2 32bit 上进行了相同的设置,一切正常。

如果你们有解决这个问题的方法,请告诉我。

0 投票
1 回答
3907 浏览

.net-3.5 - .NET 应用程序在 Windows 7 64 位上崩溃

我使用 Visual Studio 2010 和.NET Framework 3.5制作了一个应用程序并制作了安装程序。

在 Visual Studio 2010 中,我选择了“任何 CPU”作为平台,因此它可以在 64 位和 32 位 Windows 7 操作系统上运行。

当我在 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 操作系统版本: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

0 投票
1 回答
1161 浏览

nhibernate - 带有 NHibernate 的 System.Data.SQLite BadImageFormatException,独立时工作正常

我尝试将 NHibernate 与 SQLite 一起使用,对于 .NET 4 和 32 位,版本 = 1.0.74.0。我使用 64 位 WIN7,但在 x86 模式下构建应用程序(VS2010 express 中的默认值)。

当我将相同的 SQLite 用作独立应用程序时,它可以正常工作,但是当我尝试将它与 NHibernate 一起使用时,它会抛出BadImageFormatExcepion

我调试了一点 NHibernate 并在以下语句中引发了异常

有人知道解决方案的机会吗?是因为我在 VS Express 中使用默认模式吗?我是否需要使用其他方法指定平台?尝试为sqlite下载其他一些dll?

我检查了一些其他的答案,所以我得到的最好的是将这个添加到我的 app.config 中:

0 投票
0 回答
825 浏览

nunit - X86 构建上的 NUNIT 在 dll 加载时抛出 System.BadImageFormatException

您好我正在尝试使用 nunit-x86.exe 加载 C.dll。这个 C Dll 与调用相同接口的 Net.Dll 相同(通过另一个非托管 Dll)。我使用 nunit-x86.exe 运行 .Net 版本的 DLL 没有问题,但我无法在 nunit 中加载它的 C 版本

我将项目配置从 win32 更改为 x86。这会将 dot net dll 项目更改为 x86,但 C dll 只有 win32 选项。包含测试装置等的 C dll 可以正常编译和链接

以下是 nunit 的例外情况

0 投票
3 回答
6314 浏览

.net - BadImageFormatException 0x80131124(未找到索引)是什么意思?

我的程序偶尔会因以下错误消息而崩溃:

System.Reflection.TargetInvocationException:调用的目标已引发异常。---> System.BadImageFormatException:找不到索引。(来自 HRESULT 的异常:0x80131124)

一些可能相关的细节:

  • C# 4 / .NET 4
  • Windows 7 64 位操作系统。EXE 适用于任何 CPU(因此它处于 64 位模式)。
  • 这是在构建我的一个自定义对象期间抛出的。我在子 AppDomain 中创建此对象,以便我可以通过为传入请求提供服务来卸载它将加载的 DLL。
  • 我从http://blogs.msdn.com/b/yizhang/看到 HRESULT 0x80131124 = CLDB_E_INDEX_NOTFOUND。
  • 我最近才看到这种情况发生(已经在这个应用程序上工作了 3 年),即使是现在,它也只是在我尝试使用 Red Gate Performance Analyzer 或 Red Gate Memory Analyzer 分析工具时才会发生。

我的问题是

  • 这是什么意思 ?
  • 什么是“未找到索引”?
  • 我该如何解决 ?

非常感谢。

更新

我没有将 EXE 定位为 ANY,而是将其强制为 x64。问题仍然存在。

0 投票
1 回答
887 浏览

c# - 尝试创建 SQLite 数据库时出现 BadImageFormatException

我遇到了一个非常奇怪的问题,并尝试了在 www 中找到的几种解决方案,但这并没有解决我的问题。

几天前,我决定从元文件切换到数据库,因为元文件几乎用尽了我的 RAM 容量。我选择了 SQLite,因为我不想强迫用户运行整个数据库服务器只是为了运行我的程序。

所以我将 SQLite 加载到我的笔记本电脑上,将其引用到我的项目中并继续开发。一切正常。回到家后,我打开了台式电脑并想继续开发(我的整个项目总是与我的 Dropbox 同步)。但是,一旦代码到达该区域,SQLite 调用的地方就让我得到了一个 BadImageFormatException。

谷歌告诉我将我的应用程序切换到 x86,但随后它崩溃了......

两个系统都是 x64 Windows 7。

我将 dll 移动到 /bin/Debug/lib/x86/ 和 /bin/Debug/lib/x64/ 并编辑了 .csproj - 像此解决方案中提供的文件,但这根本不起作用......

在同一解决方案/项目中使用 Visual Studio 以 32 位和 64 位为目标

我的 .csproj 文件现在看起来像这样:

提前致谢

0 投票
1 回答
1855 浏览

exception - Unity 应用程序块:解决时发生异常:BadImageFormatException

我在我的应用程序中使用 Unity 2.1,并在一个解决方案的标题中收到错误。我不知道在哪里看。

  • 我正在运行 Windows 7 64 位
  • 启用32 位应用程序
  • 尝试针对“任何 CPU”“x64”构建

该问题似乎与 64 位架构无关。任何帮助将不胜感激!

情景的

代码

Unity.config

产品经理+界面

订单管理器 + 接口

使用 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 context, NamedTypeBuildKey buildKey) 在 Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) 在 Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) 在 Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object现有,字符串名称,IEnumerable`1 resolverOverrides)

0 投票
10 回答
21581 浏览

c# - NUnit 项目引起的 System.BadImageFormatException

今天是个好日子。我整天都在工作中遇到同样的问题,并且正在努力寻找任何新的途径。

当我的解决方案在服务器上构建时,我收到以下错误。我在解决方案中运行/调试所有测试都没有问题,并且构建良好。服务器和我的电脑都是 x64 的。我遵循了很多我发现无济于事的建议。

在所有配置下,我已将解决方案中的所有项目的平台目标设置为 x86。

我知道有一个 nunit-console-x86.exe 可能会有所不同,但我不确定在代码中的何处指定它。

请意识到我已经开拓了互联网,如果我错过了什么,请道歉。

System.BadImageFormatException:无法加载文件或程序集
“Spin.TradingServices.DataAcquisition.Test.NUnit,版本=1.0.12103.2060,文化=中性,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。
文件名:“Spin.TradingServices.DataAcquisition.Test.NUnit,版本=1.0.12103.2060,文化=中性,PublicKeyToken=null”

服务器堆栈跟踪:在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.Assembly.Load(AssemblyName assemblyRef) at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path) at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName , Boolean autoSuites) 在 NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName,Boolean autoSuites) 在 NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage package) 在 NUnit.Core.TestSuiteBuilder.Build(TestPackage package) 在 NUnit.Core.SimpleTestRunner.Load(TestPackage package) 在 NUnit.Core.ProxyTestRunner.Load(TestPackage package ) 在 NUnit.Core.ProxyTestRunner.Load(TestPackage package) 在 NUnit.Core.RemoteTestRunner.Load(TestPackage package) 在 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg,Int32 methodPtr,布尔 fExecuteInContext)处的 methodPtr,布尔 fExecuteInContext,Object[]& outArgs)TestSuiteBuilder.Build(TestPackage package) 在 NUnit.Core.SimpleTestRunner.Load(TestPackage package) 在 NUnit.Core.ProxyTestRunner.Load(TestPackage package) 在 NUnit.Core.ProxyTestRunner.Load(TestPackage package) 在 NUnit.Core.RemoteTestRunner。在 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 在 System.Runtime.Remoting.Messaging 加载(TestPackage 包)。 StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)TestSuiteBuilder.Build(TestPackage package) 在 NUnit.Core.SimpleTestRunner.Load(TestPackage package) 在 NUnit.Core.ProxyTestRunner.Load(TestPackage package) 在 NUnit.Core.ProxyTestRunner.Load(TestPackage package) 在 NUnit.Core.RemoteTestRunner。在 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 在 System.Runtime.Remoting.Messaging 加载(TestPackage 包)。 StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)在 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[] 处加载(TestPackage 包) & outArgs) 在 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)在 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[] 处加载(TestPackage 包) & outArgs) 在 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

在 [0] 处重新抛出异常:在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 在 NUnit.Core 的 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)。 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)

警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [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。完成建设项目”(默认目标)——失败。

构建失败。

请注意:我们已经恢复了在 Hudson 上的构建,现在更逐步地重新提交文件。我将报告情况如何。不幸的是,试图让一些人参与这个问题但无济于事。耻辱!

更新 我已经有一段时间没有回到这个页面了,但看起来有很多不同的解决方案。如果我可以将它们全部标记为答案,我会的!那些在这里找到自己的方式的人可能应该对每个选项给予同等的重视。