diff --git a/src/ElectronicPharmacy/Classes/AppConfig.cs b/src/ElectronicPharmacy/Classes/AppConfig.cs index 52affaa..195d2f1 100644 --- a/src/ElectronicPharmacy/Classes/AppConfig.cs +++ b/src/ElectronicPharmacy/Classes/AppConfig.cs @@ -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"); diff --git a/src/ElectronicPharmacy/ElectronicPharmacy.csproj b/src/ElectronicPharmacy/ElectronicPharmacy.csproj index 3ddadbc..46400ed 100644 --- a/src/ElectronicPharmacy/ElectronicPharmacy.csproj +++ b/src/ElectronicPharmacy/ElectronicPharmacy.csproj @@ -20,6 +20,7 @@ AnyCPU + false true full false @@ -30,6 +31,7 @@ AnyCPU + false pdbonly true bin\Release\