سؤال

نحن نواجه مشكلة غريبة. لدينا عنصر تحكم مستخدم مكتوب في WPF وقمنا بإضافة معالج أحداث النقر في ملف XAML. على النظام المحلي يعمل كما هو متوقع. ولكن عندما يتم إنشاء البناء على الخادم (حيث لدينا مستودع التعليمات البرمجية) ، نلاحظ أن البناء الناتج لديه خطأ. الأخطاء هو أن حدث النقر يتم إنشاؤه مرتين في كل مرة لهذا التحكم. نحن نستخدم OpenFileDialog في وظيفة معالج الأحداث لتصفح الصور. لقد لاحظنا أن النظام المحلي يبني من خلال VS يستخدم CSC.Exe للبناء أثناء وجوده على الخادم نستخدم msbuild.exe. لذلك حاولنا البناء باستخدام MSBuild على نظامنا المحلي أيضًا. لكن الخطأ لا يتكاثر على النظام المحلي. بناء الكود على نظام الخادم باستخدام VS أيضا لا يعيد إنتاج الخطأ. لذلك فإن الطريقة الوحيدة لإعادة إنشاء الأخطاء هي إنشاء البناء الآلي على الخادم. لقد حاولنا مقارنة رمز IL لكلا DLLs (عربات التي تجرها الدواب وغير buggy). فحصنا رمز IL لوظيفة معالج الأحداث. رمز IL متطابق.

لا أشك في رمزنا لأن الخطأ لا يتكاثر على نظامنا المحلي تحت أي ظرف من الظروف. يرجى إعلامي إذا كنت بحاجة إلى المزيد من المدخلات/التفاصيل.

سيكون موضع تقدير أي مساعدة.

شكرا يا ميشال

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

المحلول 2

راجع للشغل كان هذا "ثابت" (حل بديل) بسهولة تامة. يختفي الخطأ إذا تمت إضافة معالج أحداث النقر للزر من الكود بدلاً من XAML: | أعتقد أنه قد يكون بعض علة MS في XAML Loader. لست متأكدًا مما إذا كان الآخرون يسيرون هذا أيضًا ، لكننا نواجه هذا الخطأ بنشاط في أكثر من مكانين. الرابط المفقود هو تحت الظروف التي يظهر فيها الخطأ. حتى الآن رأينا هذا في حالة الزر فقط. لست متأكدًا في أي مكان آخر يظهر

نصائح أخرى

(VS يستخدم MSBuild.)

في VS ، مجموعة

الأدوات Options Project and Solutions Build and Run msBuild Project Outposity

إلى "التشخيص" ، ثم تنظيف المشروع ، وإنشائه ، والتقاط السجل من نافذة الإخراج.

قارن مع إخراج "msbuild.exe /v: diag ..." تشغيل على الخادم.

نأمل أن يجد ذلك مصدر التباين.

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