Corflags.exe, system.data.sqlite.dll и badimageformatexception
-
25-10-2019 - |
Вопрос
Бег Corflags.exe против System.Data.SQLite.dll
из http://sqlite.phxsoftware.com/ производит следующий выход.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 24
ILONLY : 0
32BIT : 0
Signed : 1
Как вы видете, 32BIT
не указан и PE
равно PE32
. Анкет Согласно с Переход с 32-битной к 64-битной разработке приложений на .NET Framework, это означает, что сборка Любой процессор. Анкет Однако использование сборки из 64 -битного приложения приводит к ошибке:
System.badimageformatexception: не может загрузить файл или сборку 'System.data.sqlite' или одна из его зависимостей. Была предпринята попытка загрузить программу с неправильным форматом. Имя файла: 'System.data.sqlite'
Если corflags.exe сообщает Любой процессор, почему происходит исключение? Ассамблея неправильно отмечена 32BIT: 0
?
Я знаю, что есть 64-битная версия, я просто хочу знать, что вызывает ошибку.
Решение
Файл System.data.sqlite.dll, который вы используете, является Сборка смешанного режима, что означает, что это не чистый код .NET (см. Также флаг «Ilonly: 0»), он также содержит также неуправляемый машинный код, который не может быть «любому процессору». Таким образом, поскольку DLL содержит 32-разрядный собственный код, его можно загрузить только в 32-битный процесс, в противном случае происходит BadimageFormateXception.
Другие советы
Если вы загрузите SQLite-1.0.66.0-binaries.zip
Файл из sourceforget.net, тогда это содержит корзина/x64 каталог с System.Data.SQLite.dll
Файл, который вы ищете.
У него также есть каталог итания.
А URL является:
http://sourceforge.net/projects/sqlite-dotnet2/files/sqlite%20for%20ado.net%202.0/1.0.66.0/