نفس التعليمات البرمجية المصدر على جهازين العائد مختلفة للتنفيذ السلوك

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

سؤال

ها هو السيناريو:

C# مشروع تطبيق Windows المخزنة في إس يستخدم لإنشاء ملف قابل للتنفيذ.عادة بناء الخادم مقابض عملية البناء ويخلق ويبني على فترات منتظمة والتي تستخدم من قبل الاختبار.في هذه الحالة بالذات كان طلب تعديل معين بناء و إنشاء الملف القابل للتنفيذ.

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

عندما أعدم التطبيق الذي تم إعداده على تطوير الجهاز لا يعمل تماما مثل واحد جمعتها بناء الخادم.على سبيل المثال ، على آلات اختبار التاريخ والوقت تحليل execption عن طريق التطبيق.ومع ذلك ، فإن بناء الجهاز التنفيذي لا رمي أي exeptions.إذا قمت بتشغيل الملف القابل للتنفيذ على تطوير آلة لا يتم طرح الاستثناءات.

لذا باختصار ، كل آلات نظريا باستخدام نفس التعليمات البرمجية المصدر و المشاريع.
تطوير الجهاز التنفيذي يعمل فقط على ديف آلة.بناء الجهاز التنفيذي يعمل على كل جهاز, بما في ذلك ديف آلة.

هي آلة الإعدادات الإقليمية أو المنطقة الزمنية المخزنة في تجميع للتنفيذ ؟ أي فكرة عما قد يسبب هذا السلوك أو كيفية التحقق من الملفات التنفيذية للعثور على الخلافات المحتملة و تصحيحها ؟

للأسف, أنا لا يمكن اتخاذ آلة اختبار و إرفاق مصحح أخطاء إلى ذلك.بأسرع ما يمكن وسوف.

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

المحلول

يستخدم التطبيق الإعدادات الإقليمية الجهاز يعمل و يبدو أنه هو المشكلة.يمكنك فرض موضوع استخدام ثقافة معينة من خلال وضع نظام.خيوط.الخيط.CurrentThread.CurrentCulture النظام.خيوط.الخيط.CurrentThread.CurrentUICulture إلى قيمة محددة.

نصائح أخرى

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

يمكنك تشغيل البرنامج على بناء آلة ضمن مصحح أخطاء?

إذا كان الأمر كذلك ، ثم تصحيح المشكلة ، هناك لا تحتاج إلى تخمين.

يكون المصحح على ديف آلة الصيد الاستثناء تعيين نقطة فاصل في نفس المكان على بناء آلة.ترى ما هو مختلف بين البلدين.

رأيت مختلفة "الخيارات الإقليمية وخيارات اللغة" على XP لأن هذا النوع من السلوك.هل هذه المباراة على كلا الآلات ؟ ابدأ | إعدادات | لوحة التحكم | الخيارات الإقليمية وخيارات اللغة...

لدي بعض الأسئلة - هل الجهازين متطابقة الإعدادات الإقليمية و أين سجلات الخطأ?أتمنى ;-) لديك الاستثناءات التي يجري التعامل معها و كتابتها إلى القرص, سجلات الأحداث ..شيء ما للمساعدة في مشاكل من هذا القبيل.

حيث لا تاريخ تأتي من أن يجري تحليل?إذا كان في db ربما لديك بيانات سيئة جدا.

كان لي مشكلة مماثلة مرة واحدة (إلا في C++) عند مقارنة أحجام من تجميع الملفات التنفيذية ، كانوا بعيدا.للأسف بعد أيام من البحث ، فإن أفضل حل وجدته هو أن إلغاء VS05 وإعادة تثبيته.

لماذا باستخدام بناء الخادم على أي حال, C# كود, إذا جاز لي أن أسأل ؟

بناء أوقات C# عندما كنت تستخدم كانت بالكاد ملحوظة (<2s).هو التطبيق كبير حقا ؟

نظام بناء ربما يجعل الإصدار ، في حين أن دليل البناء على ديف الكمبيوتر يجعل إصدار تصحيح.إصدار تصحيح أكثر التحقق من الخطأ في ذلك.انظر إذا كان يمكنك يدويا بناء الإصدار وانظر إذا لا تزال هناك خلافات.

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

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