7

को गड़बड़ कर देता है मैंने हाल ही में मैन्युअल पूर्व शर्त परीक्षण और कोड अनुबंधों के साथ अपवाद फेंक दिया है। .NET 4 में अपग्रेड करने के बजाय, मैं Microsoft.Contracts.dll असेंबली का उपयोग कर रहा हूं, इसलिए मैं .NET 3.5 से थोड़ा अधिक समय तक चिपक सकता हूं (यह एक लाइब्रेरी है जिसका उपयोग .NET 3.5 और .NET 4 असेंबली दोनों द्वारा किया जाता है)। मैंने विजुअल स्टूडियो 2010 में अनुबंध पुनःलेखक स्थापित किया है और अनुबंध ठीक काम करते हैं।.NET 3.5 के लिए संहिता अनुबंध VS10 के डीबगर

हालांकि, चूंकि मैंने यह स्विच किया है, मैंने देखा है कि डीबगर ठेके के साथ तरीकों से मजाकिया काम करता है, खासकर अनुबंधInvariantMethod के साथ कक्षाओं में। निष्पादन कर्सर हमेशा हाइलाइट की गई रेखा से मेल नहीं खाता प्रतीत होता है, कुछ ब्रेकपॉइंट्स हिट होने में असफल होते हैं और मेरे पास एक तरीका है जिसमें डीबगर स्थानीय चर नामों को नहीं बता सका और CS$1$0000 जैसी सामग्री दिखाएगा। यह डीबग बिल्ड में है।

क्या Microsoft.Contracts.dll में कोड अनुबंधों का उपयोग .NET 3.5 से VS10 में करने के बारे में ज्ञात समस्याएं हैं? .NET 4 में कोड अनुबंधों के साथ समान समस्याएं उत्पन्न होती हैं?

[संपादित करें] यह सवाल मुझे नेतृत्व माइक्रोसॉफ्ट कनेक्ट पर एक बग बनाने के लिए: https://connect.microsoft.com/VisualStudio/feedback/details/573983/code-contract-rewriting-messes-up-local-variable-names-in-iterator-methods-while-debugging

+0

[ओटी] बहुत बढ़िया उपयोगकर्ता नाम :) – roundcrisis

उत्तर

1

मुझे आशा है कि आपको पता है कि अनुबंध पुनर्लेखन का अर्थ है — फ्लाई पर उत्पन्न अतिरिक्त कोड जिसमें कंपाइलर के लिए कोई स्रोत कोड नहीं है। सीएलआर के इतने सारे अलग-अलग तत्व होने के साथ, ऐसी कई चीजें हैं जो डीबगर या तो उलझन में नहीं आतीं या उलझन में आ जाएंगी और केवल उन्हीं चीजें जो पूरी तरह से उभरती भाषा सुविधाओं वाली हैं, पूरी तरह से डीबगर समर्थन के लिए बजट प्राप्त करती हैं। उदाहरण के लिए लैम्ब्डा अभिव्यक्ति की तरह।

जो यह नहीं कहना है कि एक बग दर्ज करना एक अच्छे कारण के लिए नहीं है, बस जब आप किसी ऐसे पहलू का उपयोग कर रहे हैं जो आपको अभी भी पूरी तरह से विकसित नहीं किया गया है तो आपको कुछ भी बेहतर होने की उम्मीद नहीं करनी चाहिए। प्रारंभिक गोद लेने वाले होने के नाते हमेशा उस तरह की लागत होती है, लेकिन ब्रैगिंग अधिकार भी होते हैं :-)

+0

हाँ मुझे पता है कि बाहरी उपकरण को आईएल के साथ खेलना चाहिए और सामान को चारों ओर ले जाना चाहिए। चूंकि इस सवाल से पूछने के बाद, मैं .NET 4 पर माइग्रेट हुआ और इस समस्या से फिर से परेशान नहीं हुआ। मुझे लगता है कि .NET 3.5 के लिए कोड अनुबंध उपकरण उस संबंध में अपूर्ण थे। – Trillian

0

मन में है, कि कोड ठेके वर्तमान में पोस्ट की स्थिति & multithreading के साथ काम नहीं करते। केवल पूर्व शर्त पुनर्लेखन करने के लिए अनुबंधों को सीमित करें। जो हमारे सिस्टम में बहुत से मुद्दों को हल करता है।

+0

असल में मेरे मामले में, केवल अनुबंध पुनर्लेखन को चालू करना, भले ही पुनर्लेखन किसी के लिए सेट न हो, भले ही समस्या का कारण बनता है। तो पोस्टकंडिशन समस्या नहीं है, और मैं कोई multithreading नहीं कर रहा हूँ। – Trillian

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^