سؤال

لدينا العديد من المشاريع التي تستخدم P4.net., ، DLL المدارة، والتي بدورها تعتمد على p4dn.dll، dll غير المدارة 32 بت. يحتوي هذا على مشاكل في أنظمة X64، لذلك اضطررت إلى الذهاب إلى كل مشروع يستخدم P4.NET وتعيين نوع المعالج إلى X86.

إذا فهمت المشكلة الصحيحة، فمن هذا عندما يتم تحميل .NET exe، فهو يتحقق من بيان وإذا لم يكن هناك أي شيء هو الأفضل لنوع المعالج. ثم عندما يتم تشغيلها في DLL 32 بت، فإنه بارز.

يمكنني الذهاب إلى كل مشروع يستخدم P4.Net وتمييزه على أنه 32 بت. ولكن لدينا عدد قليل جدا من هذه. أيضا، سيستمر الأشخاص في صنع جديدة وننسى تعيين 32 بت ثم في المستقبل، سنتوقع هذه المشكلة مرة أخرى عندما يحاول شخص آخر استخدامه على x64.

سؤالي هو: هل هناك طريقة لتحميل .NET تلقائيا أي تطبيق يستخدم P4DN.DLL كما 32 بت؟ عدم وجود ذلك، هل هناك طريقة للكشف عن هذا وتفشل في البناء؟

أم أنه من الممكن إجراء ملف .manifest يمكنني وضعه بجوار P4api أو p4dn.dll بحيث تكون أي تطبيقات باستخدامها سيتم تشغيلها تلقائيا في 32 بت؟

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

المحلول

إذا كان لديك أي خيار آخر لا يمكنك استخدامه corflags. كجزء من البرنامج النصي الآلي للبناء لوضع علامة على جميع dlls .NET DLLS ك X86 - corflags /32bit+ file.dllوبعد على الرغم من أنني أعتقد أن التعليم المناسب للمطورين هو الحل المناسب.

نصائح أخرى

CLR يتحقق من النظام الأساسي فقط إذا تم تحميل مجموعة من GAC. أعتقد أن p4dn.dll موجود تحت مجلد جذر التطبيق، لذلك أعتقد أنك مخطئ في منطقك.

يبدو أنه لا يمكن استخدام p4dn.dll عندما يعمل في وضع WOW64 ويتم تشغيل التطبيق الخاص بك في وضع X64 أصليا. أعتقد أن أفضل طريقة هي ترجمة جميع مشروعك المستهدف إلى منصة X86 (32). أو كسرها في الأجزاء، لذلك سيكون المتصل p4dn.dll دائما في وضع WOW64.

أيضا، يجب عليك الاتصال مطوري P4net لإضافة دعم منصة X64 كاملة.

لا أعرف بأي طريقة للقيام بذلك تلقائيا. أود أن أوصي بالقيام بما يلي:

  • تدريب المطورين الخاص بك،
  • أضف هذا الموضوع إلى قاعدة المعارف الداخلية الخاصة بك و
  • أضف منصات X64 إلى بيئات الاختبار الخاصة بك

بالإضافة إلى ذلك، قد تفكر في كتابة الوظيفة الإضافية مقابل الشيكات التي يتحقق من النظام الأساسي الصحيح. ولكن بعد ذلك قد يكون هناك إنشاء ديناميكي مكونات COM، أيضا ...

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