我有一个使用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:
绝地无双
慕盖茨4494581