2011-11-16 10 views
11

हर समय और फिर जब मैं एक विशिष्ट समाधान बनाता हूं, तो मुझे त्रुटि में "एक अभिव्यक्ति बहुत लंबी या संकलित करने के लिए जटिल" मिल जाएगी सूची विंडो। हालांकि, एकमात्र आइटम जो त्रुटि इंगित करता है वह विशिष्ट प्रोजेक्ट है, न कि प्रोजेक्ट के भीतर एक फ़ाइल या एक विशिष्ट LOC।त्रुटि बनाएं: "एक अभिव्यक्ति संकलित करने के लिए बहुत लंबा या जटिल है"

जब मुझे यह सामना होता है, तो मैं 'साफ' करता हूं और फिर मैं वीएस को पुनरारंभ करता हूं और ऐसा लगता है कि यह ठीक है। इसका क्या कारण है इस पर कोई विचार?

यह विशेष रूप से समाधान उस में 50 परियोजनाएं हैं।

+0

क्या आपके पास कोई एडॉन्स/एक्सटेंशन सक्षम है जो संकलन के साथ हस्तक्षेप कर सकता है? – drharris

+0

वर्तमान में मेरे पास "जाने के लिए परिभाषा" और "उत्पादकता पावर टूल्स" स्थापित, सक्षम, और अपडेट किया गया है। –

+0

मैं लगभग 6 परियोजनाओं/समाधान से निपटने में खड़ा नहीं रह सकता ... मुझे आपके लिए कई दर्द महसूस होता है। –

उत्तर

14

एफवाईआई, यह त्रुटि स्टैक स्पेस से बाहर चलने वाले कंपाइलर की विशेषता है। आमतौर पर ऐसा होता है जब आप की तरह कहते हैं संकलक पर एक "गहरी प्रत्यावर्तन" समस्या फेंक,

int x = (1 + (1 + (1 + (1 + ......... + 1) + 1) + 1) + 1); 

कहते हैं, कई हजार गहरी। सिंटेक्टिक और अर्थशास्त्री विश्लेषक दोनों रिकर्सिव-वंश विश्लेषक हैं और इसलिए चरम परिदृश्यों में स्टैक स्पेस से बाहर निकलने के लिए प्रवण हैं।

मुझे नहीं पता कि क्यों बंद करना और शुरू करना उस पर असर डालेगा। यह वास्तव में अजीब है।

यदि आपको ठोस रेपो मिलता है, तो मुझे इसे देखना अच्छा लगेगा। या तो इसे यहां पोस्ट करें, या कनेक्ट पर एक बग दर्ज करें और हम इसे देखेंगे। एक ठोस repro के बिना हालांकि यह कहना मुश्किल है कि यहां क्या हो रहा है।

+0

स्टैक अतिप्रवाह त्रुटि क्यों कम से कम सही क्षेत्र को इंगित नहीं कर सकती है? (मुझे यकीन है कि इसके लिए एक बिल्कुल अच्छा कारण है) – configurator

+0

@configurator: सटीक रूप से कॉल स्टैक जिसे आप त्रुटि विश्लेषण प्रक्रिया को कॉल करने के लिए उपयोग करना चाहते हैं? जब मैं स्क्रिप्टिंग पर काम कर रहा था तब हम इस समस्या में भाग लेते थे; हम ढेर से बाहर निकल जाएंगे और ब्राउज़र को "स्टैक से बाहर" त्रुटि प्रदर्शित करने के लिए कहेंगे, जो निश्चित रूप से * फिर से स्टैक से बाहर हो जाएगा *। विंडोज़ दो बार * स्टैक से बाहर होने वाले धागे वाले प्रोग्रामों पर दयालु नहीं है, मैं आपको आश्वासन देता हूं। सी # कंपाइलर में जब हम ढेर से बाहर निकलते हैं, तो हम केवल शीर्ष-स्तरीय हैंडलर तक घबराहट करते हैं और अनचाहे होते हैं; जब तक हम अवांछित होते हैं, "जहां हम थे" खो जाता है। –

+0

@Eric मुझे लगता है कि वर्तमान फ़ाइल (और लाइन, लेकिन संभवतः थोड़ा महंगा) धारण करने के लिए केवल एक हीफ रेफरेंस ऑब्जेक्ट होने पर संसाधित किया जा रहा है और अपडेट किया जा रहा है, जबकि यह भी पर्याप्त होगा कि त्रुटि संदेश एक और अधिक विशिष्ट हो सकता है । या आप कई अलग-अलग 'ऑब्जेक्ट्स' में रिकर्स कर रहे हैं जो संभावित रूप से अलग-अलग फाइलों का प्रतिनिधित्व करते हैं। – ShuggyCoUk

1

यदि सफाई और पुनर्निर्माण कार्य करता है, तो यह स्पष्ट रूप से आपके कोड के साथ कोई समस्या नहीं है। आपको माइक्रोसॉफ्ट को इसकी रिपोर्ट करनी चाहिए, एक वीएस बग की तरह लगता है।

0

मैं जंगली में इस कभी नहीं देखा है।

हालांकि, यह आसपास googling से अच्छी तरह से विधानसभा संदर्भ की एक अतिरिक्त से, एक विशेष बोली हो सकता है:

If I reduce number of referenced assemblies to 5500 it is compiled and working

अब, निश्चित रूप से, आप किसी निर्भरता सूची है कि बड़े, क्या आप है कि क्या जांच कर सकता है पर ध्यान दिया जाएगा संदर्भित असेंबली की एक बड़ी संख्या है?

+3

कोई भी 5 हजार असेंबली का संदर्भ कैसे दे सकता है? – svick

+0

बस चेक किया गया; यह अत्यधिक बड़े प्रतीत नहीं होता है। क्या वह व्यक्ति 5500 व्यक्तिगत असेंबली का जिक्र कर रहा है? या बस प्रत्येक प्रोजेक्ट में असेंबली संदर्भों की संख्या जोड़ना और सिस्टम, सिस्टम.एक्सएमएल इत्यादि जैसे डुप्लिकेट की गिनती करना? –

+0

मुझे यह त्रुटि मिल रही है, मुझे इसी कारण से विश्वास है और मैं केवल 63 असेंबली का संदर्भ दे रहा हूं। –

2

जब आप बिल्डिंग को बिल्ड आउटपुट को अंतिम फ़ोल्डर में विफल होने से पहले देख सकते हैं तो यह देख सकता है। मैंने उस फ़ोल्डर में फ़ाइलों को हटा दिया और उन्हें एक-एक करके वापस लाया। अंत में मुद्दा मिला। मुझे नहीं पता कि यह वास्तव में क्या है लेकिन यह बहुत से HTML के साथ एक .aspx पृष्ठ था। यह अक्सर इस्तेमाल नहीं किया गया था इसलिए मैंने इसे अभी परियोजना से हटा दिया और अब यह संकलित करता है।

enter image description here

enter image description here

4

मैं एक परियोजना में इस त्रुटि विशाल फ़ाइल (25k लाइनों, मेरे द्वारा नहीं लिखा गया, जब मैं दृश्य स्टूडियो समुदाय 2013 को विजुअल स्टूडियो 2012 से बंद कर मेरे मामले में यह था) के साथ List<string[]> संग्रह प्रारंभकर्ता द्वारा शुरू किया गया था।

कुछ इस तरह:

public class Class 
{ 

    public List<string[]> BigList 
    { 
     get 
     { 
      return new List<string[]>() 
      { 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       . 
       . 
       . 
       . 
       . 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"} 
      } 
     } 
    } 
} 

मैं इसे string[][] को बदल दिया है और परियोजना

public class Class 
{ 

    public string[][] BigList 
    { 
     get 
     { 
      return new string[][] 
      { 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       . 
       . 
       . 
       . 
       . 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"} 
      } 
     } 
    } 
} 
+0

धन्यवाद मैन, आपने मेरा जीवन बचाया। –

+0

यह मेरी समस्या भी तय करता है। मेरे पास 40,000 से अधिक शब्दों के साथ एक सूची थी और उस त्रुटि को प्राप्त कर रहा था और इसे एक स्ट्रिंग में बदल रहा था [] त्रुटि को हल किया !!! – MattyMerrix

+0

67k लाइनें, यह हल हो गया। – odyth

0

मैं आज इस समस्या को मिला संकलित करने के लिए शुरू कर दिया। किसी भी तरह से मुझे अपने index.cshtml फ़ाइल में वास्तव में एक लंबी स्ट्रिंग मिली है।तो लंबे तारों की जांच करें जो इस समस्या का कारण बन सकती हैं।

0

मुझे बहुत बड़ी svg फ़ाइल का यह त्रुटि कारण मिला। और यह गूगल और कुछ व्यक्तिगत प्रयोग के बाद मैंने पाया कि बड़े एसवीजी फ़ाइल के लिए समाधान है:

@Html.Raw(File.ReadAllText(Server.MapPath("~/image.svg"))) 

उस्तरा फ़ाइल में वहाँ एचटीएमएल आंशिक लेकिन दुर्भाग्य से इस चाल बड़ा एसवीजी फ़ाइल के साथ काम नहीं कर रहा है के साथ एक और तरीका है।

आशा है कि यह मदद ..

0

मैं (वी.एस. 2012) एक 64-बिट मशीन में एक ही समस्या थी।

मैंने त्रुटि के कारण फ़ोल्डर का पता लगाने के लिए @ माइकफ्लिन के उत्तर का उपयोग किया।

अंत में मुझे लगता है मैं पीछे कोई कोड के साथ एक Help.aspx पेज था की खोज की - बस HTML लेकिन यह आधार 64

<img src="data:image/png;base64 ... /> 

मैं इसे स्थिर HTML में बदला जाएगा और यह संकलित रूप में एम्बेडेड कई आइकन चित्र थे।

पीएस एक ही परियोजना ओके संकलित कर रही थी। 32-बिट वीएस2012 मशीन में। दोनों मशीनें विंडोज 7 चला रही थीं।

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