विजुअल स्टूडियो 2010 में "वर्तमान पद्धति के कोड को अनुकूलित किया गया है," अभिव्यक्ति का मूल्यांकन नहीं किया जा सकता है


153

मैं डिबग मोड में विज़ुअल स्टूडियो 2010 का उपयोग कर रहा हूं और मेरे पास "अनचेक कोड" अनियंत्रित है। मैं डिबगर में किसी भी चर को जल्दी (या मंडराना) नहीं देख सकता। मुझे यह त्रुटि मिली "अभिव्यक्ति का मूल्यांकन नहीं कर सकता क्योंकि वर्तमान पद्धति का कोड अनुकूलित है"।

यहां तक ​​कि एक पंक्ति जैसे: int i = -3, i पर एक त्वरित निगरानी करते हुए, मुझे "इस निर्देश सूचक पर उपलब्ध नहीं होने के कारण स्थानीय या तर्क 'i' का मान प्राप्त नहीं हो सकता है, क्योंकि संभवतः इसे अनुकूलित किया गया है।"

इसी तरह के प्रश्न में संदर्भित यह लिंक लागू नहीं होता है।

क्या कोई सेटिंग मुझे याद आ रही है?


4
torulflundgren.blogspot.com.au/2010/03/… यह इसके लिए मुझे मिला सबसे अच्छा उपाय है। मैंने 2013 में विजुअल स्टूडियो में इसका परीक्षण किया था। और काम किया ....
दुलंजना विक्रमातंत्री

जवाबों:


167

जबकि परियोजना डिबग मोड में थी, समाधान नहीं था। जब मैंने इसे बदला, तो यह काम कर गया।


9
वीएस २०१२ में मेरे पास यह मुद्दा था, हालांकि समाधान और सभी परियोजनाएं बिना किसी अनुकूलन के डीबग के लिए सेट की गई थीं। मैं साफ समाधान / पुनर्निर्माण यह मेरे लिए तय की।
19

20
तो ... आप गैर-डीबग मोड के लिए समाधान कैसे सेट करते हैं?
user1431072

user1431072 - आप अपने समाधान या परियोजना पर राइट क्लिक करते हैं और संपत्ति चुनते हैं, फिर आप इसे डिबग मोड पर सेट कर सकते हैं
येवग्रे आंद्रेयेविच झिवागो

48

मेरे पास यह मुद्दा था जब मैं वीएस 2010 का उपयोग कर रहा था। मेरे समाधान कॉन्फ़िगरेशन में (डीबग) चयनित है। मैंने प्रोजेक्ट गुणों के तहत ऑप्टिमाइज़ कोड प्रॉपर्टी को अनचेक करके इसे हल किया। प्रोजेक्ट (राइट क्लिक) => गुण => बिल्ड (टैब) => ऑप्टिमाइज़ कोड को अनचेक करें


29

ऐसा लगता है कि आप एक अनुकूलित / रिलीज़ बिल्ड डिबगिंग कर रहे हैं, इसके बावजूद कि अनुकूलित बॉक्स अन-चेक किया गया है। चीजें जो आप आज़मा सकते हैं:

  • अपनी समाधान फ़ाइल का पूर्ण पुनर्निर्माण करें (समाधान पर राइट क्लिक करें और सभी का पुनर्निर्माण करें)
  • डिबगिंग करते समय मॉड्यूल विंडो खोलें (डिबग -> विंडोज -> मॉड्यूल) और लोड किए गए मॉड्यूल की सूची में अपनी असेंबली ढूंढें। जांचें कि आपके लोड किए गए असेंबली के खिलाफ सूचीबद्ध पथ वह है जो आप इसे होने की उम्मीद करते हैं, और यह कि फ़ाइल का संशोधित टाइमस्टैम्प इंगित करता है कि असेंबली वास्तव में पुनर्निर्माण किया गया था।
  • मॉड्यूल विंडो आपको यह भी बताएगी कि लोड किए गए मॉड्यूल को अनुकूलित किया गया है या नहीं - सुनिश्चित करें कि मॉड्यूल विंडो इंगित करती है कि यह अनुकूलित नहीं है।

यदि आप मॉड्यूल मेनू आइटम को डीबग -> विंडोज मेनू में नहीं देख सकते हैं, तो आपको इसे "अनुकूलित करें ..." मेनू में जोड़ना होगा।


2
समाधान फिर से बनाया गया है। मॉड्यूल विंडो से पता चलता है कि विधानसभा अनुकूलित है। मेरे पास ऑप्टिमाइज़ किया गया चेकबॉक्स अनियंत्रित है इसलिए मुझे नहीं पता कि असेंबली को हमेशा ऑप्टिमाइज़ क्यों किया जाता है। समाधान में एक वेब परियोजना है लेकिन जिस कोड को मैं देख रहा हूं वह एक क्लास लाइब्रेरी प्रोजेक्ट में डिबग मोड में है।
टोनी_ हेनरिक 7

@ टॉनी - सिली सवाल, लेकिन क्या क्लास लाइब्रेरी में "ऑप्टिमाइज़्ड" चेकबॉक्स डी-सेलेक्ट है?
जस्टिन

हाँ। मैंने अपने प्रश्न में इस तथ्य का उल्लेख किया है। मैंने पहले ही अपने सवाल का जवाब दे दिया।
टोनी_ हेनरिक 16

1
मेरे Project.Webअनुकूलन है unticked जब मैं अपने विधानसभा को देखो अभी तक यह अभी भी अनुकूलित के रूप में पता चलता है Debug > Modules:(
J86

डिबगिंग जानकारी को अपडेट करने के लिए वीएस को मजबूर करने का एकमात्र तरीका मॉड्यूल के असेंबली संस्करण को बढ़ाना था जिसे अभी भी अनुकूलित माना गया था जबकि विकल्प की जांच नहीं की गई थी।
अल्फानोच

14

VS2013 में: टूल -> विकल्प -> डिबगिंग -> सामान्य और 'प्रबंधित संगतता मोड का उपयोग करें' पर जाएं। यह नए फ़ंक्शन मूल्यांकन व्यवहार को अक्षम करता है।


धन्यवाद! पेश किए गए अन्य समाधानों में से, यह मेरे लिए महत्वपूर्ण था। अजीब बात यह थी कि यह अचानक हुआ, मुझे आश्चर्य है कि यह बदलने का क्या कारण है।
स्क्वीड 808

10

डिबग मोड में चलाने का प्रयास करें। यदि आप रिलीज़ मोड में चल रहे हैं तो आपको यह संदेश मिलेगा।


5
प्रश्न कहता है, दिन के रूप में सादा, "मैं डिबग मोड में विज़ुअल स्टूडियो 2010 का उपयोग कर रहा हूं और मेरे पास" कोड अनचेक किया गया है। "... आपको इस गैर-उत्तर को हटा देना चाहिए।
जिम बेल्टर

गंभीरता से। वह इस सवाल में कहता है कि वह डिबग में चल रहा है। मुझे नहीं मिलता क्यों upvotes। यह उत्तर संभावित प्रस्तावों को प्रदूषित कर रहा है
जॉन डेमेट्रियौ

1
FWIW, यह प्रश्न Google पर अत्यधिक रैंक करता है जब आप इस त्रुटि संदेश को खोजते हैं। यह उत्तर मेरे लिए सही था (मुझे नहीं पता था कि मैं रिलीज़ मोड में था)।
नैट बारबेटिनी

उसके पास एक से अधिक विधानसभा हो सकती हैं और कॉन्फ़िगरेशन प्रबंधक में वह जिस विधानसभा के माध्यम से डिबगिंग कर रहा है उसे रिलीज़ या sth पर सेट किया जा सकता है।
Madoxdev

8

उपरोक्त किसी भी उत्तर से मेरी स्थिति को कवर नहीं किया गया था। मैंने निम्नलिखित पाया: थ्रेडिंग पर एमएसडीएन लेख जो बताता है कि जब कुछ आदिम देशी थ्रेडिंग ऑपरेशन में फंस जाते हैं, तो डिबगर डेटा तक नहीं पहुंच सकता है। एक उदाहरण के रूप में, जब टास्क पर एक धागा बैठा होता है। (), यह आता है।


8

मुझे भी यही समस्या थी। लेकिन मेरे मामले में, मेरी परियोजना Debuggableकी AssemblyInfo.csफाइल में इस विशेषता को कठिन कोडित किया गया था और संकलन द्वारा नहीं लिखा गया था। यह Debuggableविशेषता निर्दिष्ट लाइन को हटाने के बाद काम किया ।


8

मेरे लिए यह VS2017 और VS2019 में हो रहा था। मैंने "मॉड्यूल लोड पर दबाए गए जेआईटी अनुकूलन" विकल्प का चयन करने के बाद ऐसा होना बंद कर दिया।

यहाँ छवि विवरण दर्ज करें


+1, यह मेरी समस्या का कारण था। वीएस वास्तव में csproj विकल्पों को समझने में बहुत अच्छा नहीं लगता है क्योंकि मैंने एक्सएमएल में ऑप्टिमाइज़ को बंद कर दिया है जब कॉन्फ़िगरेशन "डीबग" के साथ समाप्त होता है। MSBuild को सीधे कॉल करने पर यह ठीक काम करता है लेकिन VS में ही सही नहीं है।
TheBeardedQuack

5

मुझे VS2008 में भी यही समस्या थी। मेरे मामले में इसे समाधान-पुनर्निर्माण के माध्यम से हल किया गया था।


4

@Kragen के अलावा, यदि आप एक वेब प्रोजेक्ट डिबग कर रहे हैं

दृश्य स्टूडियो बंद करें और C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET फ़ाइलों पर अस्थायी फ़ाइलों को हटाने का प्रयास करें


समाधान में एक वेब परियोजना है लेकिन कोड कक्षा पुस्तकालय परियोजना में है। मैंने कई बार अस्थायी फ़ाइलें हटा दी हैं।
टोनी_ हेनरिक 7

4

एक अन्य चीज जो आप कर सकते हैं, वह है कि dll के समान नाम वाली एक फ़ाइल बनाएं जो अनुकूलित है, लेकिन ini एक्सटेंशन के साथ और इसके बाद निम्न जोड़ें:

[.NET फ्रेमवर्क डिबगिंग कंट्रोल]
GenerateTrackingInfo = 1
AllowOptimize = 0

यह JIT को आपके चरों को अनुकूलित नहीं करने के लिए कहेगा।

ध्यान दें कि आपको अभी भी pdb की आवश्यकता है, इसलिए आप कुछ इस तरह से समाप्त करेंगे: yourDll.dll yourDll.pdb yourDll.ini

यह परिदृश्यों में विशेष रूप से अच्छी तरह से काम करता है जब आपके पास डीबग विकल्प के साथ dll को फिर से उत्पन्न करने के लिए उपयोग नहीं होता है।

http://www.hanselman.com/blog/DebugVsReleaseTheBestOfBothWorlds.aspx


4

जब आप " अभिव्यक्ति का मूल्यांकन नहीं कर सकते क्योंकि वर्तमान विधि का कोड अनुकूलित है। " एक Debugger.Break()बयान जारी करने के बाद संदेश तब कृपया सुनिश्चित करें कि आप अगले कथन पर जाने के लिए F10 दबाएं।

एक बार जब आप अगले कथन पर चले जाते हैं, और मान लेते हैं कि आप डीबग बिल्ड चला रहे हैं, तो यह संदेश गायब हो जाना चाहिए।


2
वह यह था। मैंने ऊपर दिए गए सभी समाधानों की कोशिश की है और इस छोटी सी चीज ने काम किया है .. इसे साझा करने के लिए धन्यवाद, मैं इस तुच्छ संकेत को देखने के बिना और भी अधिक घंटे बर्बाद करूंगा ..
क्रिज़ीस्तोफ़ सिन्टर

Nop। काम नहीं किया। Vs17 अभी भी सोचता है कि मैं एक रिलीज बिल्ड
जॉन डेमेट्रियौ

3

"ऑप्टिमाइज़ कोड" प्रॉपर्टी के साथ समस्या के बारे में अभी तक UNCHECKED होने के बावजूद कोड को अभी भी ऑप्टिमाइज़ किया जा रहा है: आखिरकार सब कुछ आज़माने के बाद मुझे क्या मदद मिली, एक ही सेटिंग पेज (प्रोजेक्ट प्रॉपर्टीज़ - डीबग) पर "अनवांटेड कोड डीबगिंग सक्षम करें" चेकबॉक्स। यह सीधे कोड अनुकूलन से संबंधित नहीं है, लेकिन इस सक्षम के साथ, वीएस अब मेरे पुस्तकालय का अनुकूलन नहीं करता है और मैं डीबग कर सकता हूं।


3

टेस्टेड वेब ऐप से क्लास लाइब्रेरी को डिबेट करते समय मुझे यही समस्या थी। मैं परीक्षण संस्करण में रिलीज़ संस्करण का उल्लेख कर रहा था और इसे कक्षा के पुस्तकालय गुणों में अनुकूलित करने के लिए सेट किया गया था।

क्लास लाइब्रेरी प्रॉपर्टीज में रिलीज़ संस्करण के लिए ऑप्टिमाइज़ कोड चेकबॉक्स को अन-टिक करके, बस जब मैं इसे लिख रहा हूं, तो समस्या हल हो गई है।


धन्यवाद कि यह किया। आप इस चेकबॉक्स को हर प्रोजेक्ट में राइट क्लिक करके और उनके "प्रॉपर्टीज़" मेन्यू विकल्प को चुनकर, फिर "बिल्ड" टैब पर पा सकते हैं।
गोआम्न

3

मुझे लगता है कि यह बाद का उत्तर है, लेकिन मुझे इस मुद्दे को संबोधित करने के तरीके का एक और संदर्भ मिला जो भविष्य में दूसरों की मदद कर सकता है। यह वेब पेज एक पर्यावरण चर (COMPLUS_ZapDisable = 1) स्थापित करने का वर्णन करता है जो अनुकूलन को रोकता है, कम से कम यह मेरे लिए किया था! (विज़ुअल स्टूडियो होस्टिंग प्रक्रिया को अक्षम करने के दूसरे भाग को मत भूलना।) मेरे मामले में, यह और भी अधिक प्रासंगिक हो सकता है क्योंकि मैं एक बाहरी डीएलएल को एक प्रतीक सर्वर के माध्यम से डिबग कर रहा था, लेकिन मुझे यकीन नहीं है।


3

मुझे F # प्रोजेक्ट के साथ यह समस्या थी जो विज़ुअल स्टूडियो और मोनोडेवलप के बीच यहां और शायद पहले से था (शायद मैं भूल गया)। VS में, ऑप्टिमाइज़ेशन बॉक्स अनियंत्रित था, फिर भी ऑप्टिमाइज़िंग निश्चित रूप से जहाँ तक डिबगर का संबंध था, रोना प्रतीत हो रहा था।

एक स्वस्थ एक के खिलाफ परियोजना फ़ाइल के एक्सएमएल की तुलना करने के बाद, समस्या स्पष्ट थी: स्वस्थ परियोजना में एक स्पष्ट <optimize>false</optimize>रेखा थी, जबकि खराब एक पूरी तरह से गायब था। वीएस स्पष्ट रूप से अपनी अनुपस्थिति से जिक्र कर रहे थे कि अनुकूलन अक्षम था, जबकि कंपाइलर इसके विपरीत कर रहा था।

समाधान यह था कि इस संपत्ति को प्रोजेक्ट फ़ाइल में जोड़ा जाए, और पुनः लोड किया जाए।


1

जब मैंने विज़ुअल स्टूडियो 2017 में माइग्रेट किया तो मुझे यह संदेश मिलना शुरू हो गया। इस पृष्ठ पर कोई भी विचार जो मैंने कोशिश की, मेरे लिए काम नहीं किया। एक और पोस्ट पर मुझे यह सुझाव मिला और यह काम किया - निकालें:

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

... अपनी असेंबलीइन्फो फाइल से।


लव यू @Crazy बिल्ली। यह मेरे साथ तब हुआ है जब मैं VS2019 में चला गया।
एंटोनियो रॉड्रिग्ज

0

वीएस 2010 में भी मेरे पास यही मुद्दा था। क्लीन-अप और समाधान का पुनर्निर्माण और यह काम किया।


0

vickramds की टिप्पणी ऊपर, http://torulflundgren.blogspot.com.au/2010/03/cannot-obtain-value-of-local-or.html का उल्लेख करते हुए , मेरे लिए किया। मैंने सब कुछ चेक किया - स्थानीय बिन फ़ोल्डरों से सभी dll, pdb फाइल्स को डिलीट किया, क्लीन, रिबिल्ड, टेंपरेरी ASP.NET फाइल्स के सभी फोल्डर को क्लीयर किया, यह सुनिश्चित किया कि TRACE / DEBUG फ्लैग सेट किए गए थे, DLL पाथ को चेक किया था, आदि।

प्रभावित परियोजना के लिए इसे खोना नहीं है, इसलिए:

परियोजना गुण -> निर्माण -> उन्नत -> डिबग जानकारी: पूर्ण।

आप यह जांचना चाहते हैं कि आपके पास यह करने से पहले डिबग कॉन्फ़िगरेशन का चयन किया गया है, जब तक कि निश्चित रूप से, आपने अन्यथा इरादा नहीं किया है।


0

यदि आप ASP.NET प्रोजेक्ट को डीबग करने का प्रयास कर रहे हैं, तो सुनिश्चित करें कि प्रोजेक्ट के गुण> वेब> सर्वर ड्रॉपडाउन "IIS एक्सप्रेस" पर सेट है (यहां सब कुछ जांचने के अलावा)।


0

मैंने c ++ / cli mfc एक्सटेंशन dll मिलाया था, जिसे डिबग कॉन्फ़िगरेशन (VS 2017 मोड्यूल विंडो से देखा गया) के अनुसार भी ऑप्टिमाइज़ किया गया था। जैसा कि पिछले उत्तर ने सुझाव दिया था कि मैंने "VS2013 में बदल दिया: उपकरण -> विकल्प -> डिबगिंग -> सामान्य और 'प्रबंधित संगतता मोड का उपयोग करें' को सक्षम करता है। यह नए फ़ंक्शन मूल्यांकन व्यवहार को अक्षम करता है।" यह सेटिंग वीएस 2017 में भी मिलती है।

लेकिन यह पर्याप्त नहीं था, इसलिए मैंने Dll प्रोजेक्ट फ़ाइल को विस्तारित करने के लिए अन्य MFC ऐप की प्रोजेक्ट फ़ाइल से UseDebugLbooks सेटिंग की प्रतिलिपि बनाई।

    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
      ...
      <UseDebugLibraries>true</UseDebugLibraries>

फिर पुनर्निर्माण और उस समस्या को ठीक किया।


0

विजुअल स्टूडियो 2012 में टूल> डिबगिंग> जस्ट-इन-टाइम से " प्रबंधित " विकल्प को सक्षम करना मेरे लिए काम किया।

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.