为了账号安全,请及时绑定邮箱和手机立即绑定

BadImageFormatException故障排除

BadImageFormatException故障排除

慕斯王 2019-09-02 10:56:14
我有一个使用Visual Studio 2010用C#编写的Windows服务,目标是完整的.NET Framework 4.当我从Debug构建运行时,服务按预期运行。但是,当我从Release版本运行它时,我得到一个System.BadImageFormatException(详情如下)。我一直在网上寻找解决方案,但到目前为止,我发现的每件事都没有帮助我找到解决方案。Windows 7 64位(dev)和Windows XP SP3 32位(目标)系统都存在此问题。这是我到目前为止所尝试的:已验证的构建设置(例如Platform Target)都是相同的(x86)。使用带有/ verbose选项的peverify以确保程序集二进制文件有效。使用fuslogvw查找任何加载问题。使用CheckAsm查找丢失的文件或组件。所有这些检查都没有改变任何东西。我已经在下面列出了例外信息的全文,其中一些名称已经更改,以保护我公司主人的秘密。System.BadImageFormatException未处理  Message =无法加载文件或程序集'XxxDevices,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。尝试加载格式不正确的程序。  来源= XxxDevicesService  FileName = XxxDevices,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null  FusionLog =装配管理器从以下位置加载:C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll在可执行文件c:\ Dev \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe下运行---详细的错误日志如下。 ===预绑定状态信息===日志:用户= XXX日志:DisplayName = XxxDevices,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null (完全指定的)日志:Appbase = file:/// c:/ Dev / TeamE / bin / Release /日志:初始PrivatePath = NULL调用程序集:XxxDevicesService,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null。===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:c:\ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe.Config日志:使用主机配置文件: 日志:使用C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config中的计算机配置文件。日志:此时策略未应用于引用(私有,自定义,部分或基于位置的程序集绑定)。日志:尝试下载新的URL文件:/// c:/TeamE/bin/Release/XxxDevices.DLL。错误:无法完成程序集的设置(hr = 0x8007000b)。探测终止。  堆栈跟踪:       在XxxDevicesService.Program.Main(String [] args)       在System.AppDomain._nExecuteAssembly(RuntimeAssembly程序集,String [] args)       在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean ignoreSyncCtx)       在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)       在System.Threading.ThreadHelper.ThreadStart()  的InnerException: 
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

在我不停地敲桌子后想着整个星期,我花了这个问题,我正在分享对我有用的东西。我有Win7 64位,32位Oracle客户端,并且我的MVC 5项目设置为在x86平台上运行,因为Oracle的位数。我一直得到同样的错误:

无法加载文件或程序集“Oracle.DataAccess”或其依赖项之一。尝试加载格式不正确的程序。

我重新加载了NuGet包,我使用了在不同应用程序中为其他人工作的DLL的副本,我将依赖程序集中的代码库设置为指向我项目的bin文件夹,我尝试将CopyLocal设置为true或false,我尝试了所有内容。最后我做了足够的其他事情,我想检查我的代码,作为一个新的承包商,我没有设置颠覆。在寻找将其挂钩到VS的方法时,我绊倒了答案。我发现的工作是取消选中Tools => Options菜单下的Projects and Solutions => Web Projects部分下的“使用64位版本的IIS Express for Web Sites and Projects”选项。


查看完整回答
反对 回复 2019-09-02
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

当您更改.csproj的目标框架并将其恢复为您的开始时,通常会发生这种情况。

在app.config中的启动标记下,确保1如果supportedRuntime version =“与cs项目目标不同的运行时”。

确保2这也意味着检查属性文件夹中的其他自动生成或其他文件,以查看这些文件与.csproj文件中定义的文件之间是否没有更多的运行时不匹配。

在开始尝试使用项目属性来解决错误之前,这些可能只会节省大量时间。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 1353 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信