على بعض أجهزة الكمبيوتر، لا يمكن للتطبيق تحميل ملف sqlite dll

StackOverflow https://stackoverflow.com/questions/1621758

سؤال

لقد كتبت تطبيقًا يستخدم sqlite وهو يعمل بشكل رائع معظم من الأنظمة.إنه مكتوب بلغة C#، والتجميع الوحيد غير الإطاري هو sqlite، والذي تم تضمينه بواسطة System.Data.SQLite.dll .

أقوم بنشره بنفس الطريقة على كافة الأجهزة (انسخ وألصق ملف exe وملف قاعدة البيانات وملف System.Data.SQLite).إنه يعمل بشكل رائع مع جميع أجهزة الكمبيوتر الشخصية ومعظم أجهزة الكمبيوتر التي جربتها.

ولكن بعد ذلك تلقيت تقارير تفيد بأنه بالنسبة لبعض الأشخاص يطرح الاستثناء التالي:

لا يمكن تحميل الملف أو التجميع "system.data.sqlite ، الإصدار = 1.0.65.0 ، الثقافة = محايد ، publickeytoken = db937bc2d44ff139 'أو واحدة من تبعياتها.تم إجراء محاولة لتحميل برنامج بتنسيق غير صحيح.

لقد تأكدت الآن من وجود ملف dll في نفس المجلد الموجود فيه ملف exe الخاص بالتطبيق.إنه نفس ملف dll، مع نفس الإصدار كما هو مذكور في رسالة الاستثناء أعلاه.

لقد كنت في حيرة من أمري بسبب هذا الأمر، لذلك قمت بإنشاء جهاز افتراضي جديد، وقمت بتثبيت Windows 7 Professional عليه، وقمت فقط بنسخ الملفات ولصقها، وقد نجح الأمر.لذا، إذا كان يعمل على نوافذ جديدة، فلا أستطيع أن أتخيل ما يمكن أن تفتقده أجهزة الكمبيوتر الأخرى...

ملحوظة:اثنان من تلك الأجهزة التي يطرح فيها المشروع الاستثناء يعملان أيضًا بنظام التشغيل Windows 7 الاحترافي.

وسأكون ممتنًا حقًا لأي مساعدة في هذا الشأن، لأنني لم تعد لدي أفكار جديدة...

هل كانت مفيدة؟

المحلول

هنا احتمال:هل الفرق بين الأجهزة العاملة وغير العاملة 32 بت مقابل 32 بت؟64 بت؟هل تقوم بالإنشاء من أجل "أي وحدة معالجة مركزية"، في حين يجب أن تقوم بالإنشاء فقط للحصول على جزء صغير من ملف DLL الخارجي الخاص بك؟

نصائح أخرى

من الممكن أن الأجهزة التي تطرح الاستثناء تعمل بإصدار 64 بت من Windows وأن برنامجك يستخدم تكوين AnyCPU.إن System.Data.SQLite DLL هو وحش ذو وجهين:جزء مُدار وجزء أصلي.من الممكن أن يكون الجزء الأصلي هو المسؤول عن الاستثناء.

يرى هذا السؤال لمزيد من المعلومات.

هل قمت بفحص ما إذا كان النظام المستهدف هو 64 بت أو 32 بت؟

ربما تتطلب إحدى تبعياتك إصدار 32 بت من Windows.لحل المشكلة، يمكنك تحديد هدف النظام الأساسي في خصائص مشروع C# الخاص بك:اختر x86 بدلاً من Any CPU.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top