У меня есть служба Windows, написанная на C # с использованием Visual Studio 2010 и предназначенная для полной версии .NET Framework 4. При запуске из сборки отладки служба запускается, как и ожидалось.Однако, когда я запускаю его из сборки Release, я получаю исключение System.BadImageFormatException (подробности ниже).Я искал решение в Интернете, но пока что все, что я нашел, не помогло мне найти решение.
Проблема существует как в Windows 7 64-bit (dev), так и в Windows XP32-разрядные (целевые) системы SP3.
Вот что я пробовал до сих пор:
- Проверенные параметры сборки, такие как Platform Target, одинаковы (x86).
- Используется peverify с параметром / verbose, чтобы убедиться, что двоичные файлы сборки действительны.
- Использует fuslogvw для поиска проблем с загрузкой.
- Используется CheckAsm для поиска отсутствующих файлов или сборок.
Все эти проверки ничего не изменили.Я включил полный текст информации об исключении ниже, с некоторыми именами, измененными, чтобы защитить секреты моих корпоративных мастеров.
System.BadImageFormatException was unhandled
Message=Could not load file or assembly 'XxxDevices, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Source=XxxDevicesService
FileName=XxxDevices, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
FusionLog=Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable c:\Dev\TeamE\bin\Release\XxxDevicesService.vshost.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = XXX
LOG: DisplayName = XxxDevices, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///c:/Dev/TeamE/bin/Release/
LOG: Initial PrivatePath = NULL
Calling assembly : XxxDevicesService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\TeamE\bin\Release\XxxDevicesService.vshost.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///c:/TeamE/bin/Release/XxxDevices.DLL.
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.
StackTrace:
at XxxDevicesService.Program.Main(String[] args)
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: