Как исправить BadImageFormatException при запуске приложения?
3591
Mixxiphoid
Я купил игру Stardew Valley на steam, установил, запустил. Ничего не произошло: (... Когда я посмотрел в окне просмотра событий, я увидел следующую информацию:
Application: Stardew Valley.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.BadImageFormatException at StardewValley.Program.Main(System.String[])
Для меня это звучит как плохая DLL или неправильная архитектура для DLL, но я не смог разобраться в чем проблема. Сразу после этого:
Fault bucket 108078241334, type 1 Event Name: APPCRASH Response: Not available Cab Id: 0 Problem signature: P1: Stardew Valley.exe P2: 1.0.5940.30711 P3: 5705b1ef P4: KERNELBASE.dll P5: 10.0.10586.162 P6: 56cd55ab P7: e0434352 P8: 000bdad8 P9: P10:
Мне нравится решать свои проблемы, но через 6 часов я сдаюсь. Я использовал Dependency Walker, чтобы сообщить мне об отсутствующих dll или несовместимых версиях. Одна из странных вещей заключается в том, что исполняемый файл игры - x86, а все загруженные dll - x64. У моей жены тоже есть игра, и она работает на ее компьютере, однако Dependency Walker не сообщил о каких-либо больших различиях. Она получила только несколько доступных длл (которые я потом скопировал, но не помогло).
Вот что я попробовал (с перезагрузками между ними):
Переустановите игру (3 раза)
перезагружать
Проверка целостности файла Steam
Начать вне пара
Начать с правами администратора
Все режимы совместимости
Переустановка XNA 4.0
Полностью удалил XNA 4.0 и переустановил
SFC / SCANNOW
dism / Online / Cleanup-Image / RestoreHealth
Установка на игру на диске C вместо диска F
Полное удаление всех System32 / d2 * .dll и d3 * .dll и переустановка directx (что сломало несколько других игр)
Обновленные графические драйверы
dxdiag сообщает о проблемах
выключить и снова включить
размещение следующих (отсутствующих) dll в каталоге system32 / syswow64 / game
Я декомпилировал exe, чтобы посмотреть на его ссылки, которые:
Lidgren.Network
Microsoft.Xna.Framework
Microsoft.Xna.Framework.Game
Microsoft.Xna.Framework.Graphics
Microsoft.Xna.Framework.Xact
mscorlib
PresentationCore
Steamworks.NET
система
System.Core
System.ServiceModel
System.Windows.Forms
System.Xml
xTile
Все эти DLL были успешно решены. Что еще я могу сделать, чтобы попытаться решить эту проблему? Я переустановлю свою систему через два месяца, что может помочь, но я думаю, что слишком радикально делать это сейчас ради одной программы, которая отказывается запускаться.
РЕДАКТИРОВАТЬ: Вот аварийный дамп, срок действия которого истекает 27-04-2016.
Я также посмотрел на аварийный дамп и попытался отладить его с помощью Visual Studio 2015. Я получаю следующую ошибку: необработанное исключение типа 'System.BadImageFormatException' произошло в неизвестном модуле.
Additional information: Could not load file or assembly 'Microsoft.Xna.Framework.dll' or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT: 0x800700C1) If there is a handler for this exception, the program may be safely continued.
Я не понимаю эту ошибку. Я уже дважды переустанавливал его! Тем не менее, когда я ищу DLL, я нахожу несколько версий, расположенных в следующих местах:
C: \ Program Files (x86) \ Microsoft Silverlight \ 5.1.41212.0
C: \ Program Files (x86) \ Microsoft SDK \ Windows Phone \ v8.1 \ Tools \ MDILXAPCompile \ Framework
C: \ Program Files (x86) \ Справочные сборки \ Microsoft \ Framework \ WindowsPhone \ v8.1
C: \ Program Files (x86) \ Microsoft SDK \ Windows Phone \ v8.1 \ Tools \ AppDeploy \ MdilXapCompilev8.0 \ Framework
C: \ Program Files (x86) \ Справочные сборки \ Microsoft \ Framework \ Silverlight \ v5.0
C: \ Program Files (x86) \ Microsoft XNA \ XNA Game Studio \ v4.0 \ References \ Windows \ x86
C: \ Program Files (x86) \ Microsoft XNA \ XNA Game Studio \ v4.0 \ References \ Xbox360
Когда я смотрю на ссылки с DotPeek, он говорит, что он принимает это: C: \ Program Files (x86) \ Microsoft XNA \ XNA Game Studio \ v4.0 \ References \ Windows \ x86 \ Microsoft.Xna.Framework.dll (который существует).
захватить аварийный дамп и поделиться сжатым dmp (как 7z / RAR): http://msdn.microsoft.com/en-us/library/bb787181%28VS.85%29.aspx
magicandre1981 8 лет назад
0
@ magicandre1981 Я добавил аварийный дамп
Mixxiphoid 8 лет назад
0
3 ответа на вопрос
3
Mixxiphoid
I finally fixed it. Here is the solution:
I had the x64 X3dAudio_7.dll in the sysWow64 folder and the x86 X3dAudio_7.dll in the system32 folder. I switched them, reinstalled XNA and everything worked!
I found this out by opening Microsoft.Xna.Framework.dll in Dependency Walker. I noticed that all refered DLL's were x64 except for this one.
It may not seem logical but, if you have a x64 installation of windows, all x64 dll's go into the system32 folder and the x86 dll's into the SysWow64 folder.
хорошо, dmp показывает только ** Не удалось загрузить файл или сборку «Microsoft.Xna.Framework.dll» или одну из ее зависимостей. не является допустимым приложением Win32 **, поэтому я бы также предложил использовать зависит от DLL, чтобы увидеть, что происходит
magicandre1981 8 лет назад
0
@ magicandre1981 и что я сделал :), большое спасибо!
Mixxiphoid 8 лет назад
0
1
pay
I was going to just add a comment but can't yet, and this is unlikely to work anyway, but it's worth a shot since you probably haven't tried it.
You might want to uninstall the game before doing this, but it's up to you really as you seem to have a pretty decent grasp on this stuff anyway.
With Steam closed
1) Start > Run > %temp% (clear all that junk out)
2) Clear out the temporary files in C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files and C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
Я уже все перепробовал по ссылке на steam форум, но все равно спасибо :). Я попробую ваше предложение на предмет ремонта .NET.
Mixxiphoid 8 лет назад
0
0
pitsch
или вы можете поместить 32-битную версию X3dAudio_7.dll в ту же папку с игрой exe.