BadImageFormatException - Можно ли указать, какая версия.NET используется для запуска исполняемого файла?
Я запускаю исполняемый файл.NET 2.0 с расширением.com из командной строки и получаю следующую ошибку:
System.BadImageFormatException : The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)
Я почти уверен, что он пытается загрузить DLL из глобального кэша сборок.NET 2.0.
Я получаю эту ошибку только на машинах с установленной.net 4.0 / visual studio 2010, поэтому я предполагаю, что для запуска используется неверная версия.net framework. Любые идеи о том, как подтвердить это предположение?
или есть способ указать программу для использования.net 2 времени выполнения вместо.net 4 для запуска файла.com?
1 ответ
Если установлен только.NET 4.0 Framework и вы хотите запустить сборку приложения для / с.NET 2.0, вам нужно сообщить.NET 4.0 Framework, что для приложения требуется среда выполнения.NET 2.0. Это делается с помощью файла конфигурации со следующими записями.
Необходимый атрибут для установки - useLegacyV2RuntimeActivationPolicy
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0.30319"/>
</startup>
</configuration>