«System.BadImageFormatException» обычно указывает на 64-битную / 32-битную проблему.
Если вы скомпилируете свой код для «Любого ЦП» и запустите его на 64-битном процессоре, он будет скомпилирован в JIT до 64-битной. Если затем он вызывает какой-либо код (например, в неуправляемой dll), который является 32-разрядным, вы получите это исключение при попытке перехода с 64-разрядного на 32-разрядный код.
Если вы работаете в 64-битной ОС, возможно, что-то в вашем обновлении заставило вашу программу получить смесь 32-битного и 64-битного кода. Если вы работаете в 32-битной ОС, тогда проблема не может быть, однако, в этом случае это может указывать на испорченный бинарный файл.
Если это 32/64, то вы можете сделать следующее:
- Убедитесь, что все используемые вами библиотеки имеют ту же разрядность, что и ваше приложение, или
- Если вы не можете заменить некоторые 32-битные библиотеки на 64-битные версии, попробуйте скомпилировать ваше приложение как «x86», а не «Any CPU». Это заставит его скомпилироваться в 32-битный код даже на 64-битном ПК, что будет означать, что он должен работать под WoW64 как 32-битное приложение, но будет совместимо с его 32-битными библиотеками.