Fix SQLite BadImageFormat by disabling Prefer32Bit and syncing interop arch.

Ensure SQLite.Interop.dll next to the exe always matches process bitness from x86/x64.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Magomed 2026-07-30 14:27:41 +03:00
parent fd5bd18c66
commit 3d253a2f54
2 changed files with 4 additions and 9 deletions

View File

@ -129,7 +129,7 @@ namespace Электронная_Фармация.Classes
private static void EnsureSQLiteInteropInBaseDir()
{
// System.Data.SQLite ожидает SQLite.Interop.dll рядом с exe.
// В релизной поставке DLL часто лежит в подпапках x86/x64.
// Важно: разрядность DLL должна совпадать с процессом (Prefer32Bit => x86).
if (_sqliteInteropPrepared)
{
return;
@ -144,13 +144,6 @@ namespace Электронная_Фармация.Classes
var baseDir = AppDomain.CurrentDomain.BaseDirectory;
var targetDll = Path.Combine(baseDir, "SQLite.Interop.dll");
if (File.Exists(targetDll))
{
_sqliteInteropPrepared = true;
return;
}
// AnyCPU в .NET Framework обычно выбирает разрядность процесса автоматически.
var archFolder = Environment.Is64BitProcess ? "x64" : "x86";
var sourceDll = Path.Combine(baseDir, archFolder, "SQLite.Interop.dll");
var sourcePdb = Path.Combine(baseDir, archFolder, "SQLite.Interop.pdb");
@ -159,7 +152,7 @@ namespace Электронная_Фармация.Classes
{
if (File.Exists(sourceDll))
{
Directory.CreateDirectory(baseDir);
// Всегда подкладываем DLL нужной разрядности (даже если в корне уже лежит "чужая").
File.Copy(sourceDll, targetDll, overwrite: true);
var targetPdb = Path.Combine(baseDir, "SQLite.Interop.pdb");

View File

@ -20,6 +20,7 @@
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
@ -30,6 +31,7 @@
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>