2014-07-26 4 views
8

मैं एएसपीनेट एमवीसी का उपयोग कर रहा हूं और मैं जानना चाहता हूं कि सीएसटीएमएल फाइलों में .NET कोड अपडेट करते समय मुझे अपनी परियोजना को संकलित करने की आवश्यकता क्यों नहीं है? अब अगर हम एचटीएमएल \ सीएसएस अपडेट के बारे में बात कर रहे हैं तो मैं स्पष्ट रूप से समझता हूं कि एक साधारण रीफ्रेश पर्याप्त क्यों होगा, लेकिन इन मामलों में फ्लाई पर .NET कोड संकलित कैसे होता है?.net कोड के साथ cshtml फ़ाइलों को अद्यतन करते समय संकलन की आवश्यकता क्यों नहीं है?

चलें कहते हैं कि मैं एक दृश्य है और मैं कुछ सी # कोड यह करने के लिए, आम तौर पर मैं अपने cshtml फाइल करने के लिए कोड की इस पंक्ति जोड़ सकते हैं Datetime.Now.ToString();
अब की तरह कुछ जोड़ने फ़ाइल को सहेजने के पृष्ठ ताज़ा करें और परिणाम देखना चाहते हैं संकलन के बिना।

अगर मैं अपने मॉडल में एक संपत्ति जोड़कर "पुस्तक द्वारा" वही करता हूं, तो मेरे नियंत्रक में Datetime.Now.ToString() असाइन करना और केवल नए var को प्रस्तुत करना मुझे परिवर्तन देखने के लिए मेरे कोड को संकलित करने की आवश्यकता होगी।

यह जादू कैसे काम करता है? यदि यह इतना आसान है, तो यह .cs फ़ाइलों के साथ भी क्यों नहीं किया जा सकता है?

पी। वही सवाल एएसपीनेट अनुप्रयोगों और एएसपीएक्स \ एसीएक्स पृष्ठों के लिए प्रासंगिक है।

उत्तर

9

.cshtml फ़ाइलों को केवल समय-समय पर संकलित किया जाएगा, जब वह पृष्ठ उन पृष्ठों के बारे में आता है।

हालांकि नियंत्रक पूर्व-संकलित और आपके प्रोजेक्ट की डीएलएल फाइलों में संग्रहीत हैं।

निर्णय लेने के लिए कौन सा निर्णय लेता है, आपकी आवश्यकताओं पर निर्भर करता है। प्री-कंपाइलिंग आपको कम प्रतिक्रिया समय देती है (क्योंकि आपने पहले कोड संकलित किया है) लेकिन केवल समय-समय पर संकलन आपको लचीलापन प्रदान करता है।

+0

मुझे नफरत है जब मैं एक दृश्य की एकल वर्ण बदल सकते हैं और यह 2 मिनट लगते हैं परियोजना लोड करने के लिए !!!! असहनीय। मुझे PHP पर स्विच करना चाहते हैं। – DarthVader

+0

दिलचस्प .. मुझे क्या पता है: सीएस कोड आईएल कोड (डीएलएल फाइलों) में संकलित किया गया है और जेआईटी कंपाइलर मशीन कोड के अनुकूलन के साथ कोड "फ्लाई पर" संकलित करता है। सीएचटीएमएल कोड आईएल कोड से पहले संकलित है? –

+2

@AmirPopovich मैंने सामान्य अर्थ से "बस-इन-टाइम" शब्द का उपयोग किया। यह निश्चित रूप से आईएल के लिए संकलित है, लेकिन केवल जब आवश्यक (प्रति अनुरोध)। यदि आपके लिए प्रदर्शन महत्वपूर्ण है (जो अधिकांश समय है, तो यह है) आपको अपने cshtml – Alireza

7

एएसपी.नेट इंफ्रास्ट्रक्चर का हिस्सा एएसपी.नेट कंपाइलर है। यह निष्पादन योग्य कोड (* .aspx, * .ascx, * .cshtml आदि) को निष्पादन योग्य कोड में संकलित करने के लिए ज़िम्मेदार है।

कोई जादू नहीं है, रनटाइम संकलक को चलाने का फैसला करता है (उदाहरण के लिए जब संसाधन अंतिम रन के बाद बदल दिया गया है) और उसके बाद घोषणात्मक कोड (जैसे एक * .aspx) से एक अनिवार्य कोड बनाने के लिए कंपाइलर को आमंत्रित करता है * .cs में संकलित है)। फिर यह * * डीएल युक्त सीआईएल प्राप्त करने के लिए नियमित भाषा संकलक का आह्वान करता है।

संसाधनों तक पहुंचने में पहली बार कुछ समय लगता है, यह समय से पहले सभी घोषणात्मक संसाधनों को प्रीकंपाइल करने में आसान हो सकता है।

अवलोकन:

http://msdn.microsoft.com/en-us/library/vstudio/ms178466(v=vs.100).aspx

Precompilation:।

http://msdn.microsoft.com/en-us/library/aa983464(v=vs.110).aspx

+0

+1 - आपके उत्तर के लिए धन्यवाद। यह एक बहुत अच्छा जवाब है। अलीरेजा का जवाब भी अच्छा था और मैंने उसे स्वीकार कर लिया क्योंकि उसने पहले जवाब दिया था। –

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

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