MVC4 अनुप्रयोगों पर प्रकाशन विकल्प के दौरान नए प्रीकम्पेल का क्या प्रभाव पड़ता है?


85

इसलिए मैंने हाल ही में विज़ुअल स्टूडियो 2012 को अपडेट करने के लिए 2 अपडेट किया। लो और निहारना, अगली बार जब मैं अपना आवेदन प्रकाशित करने जाऊंगा (इस मामले में फ़ाइल प्रकाशित के माध्यम से) मुझे लगता है कि तीन नए विकल्प हैं:

  1. प्रकाशित करने से पहले सभी मौजूदा फ़ाइलों को हटा दें
  2. प्रकाशन के दौरान Precompile (कॉन्फ़िगर करने के लिए एक लिंक के साथ)
  3. App_Data फ़ोल्डर से फ़ाइलों को छोड़ दें

पहला और तीसरा विकल्प बहुत ही आत्म-व्याख्यात्मक हैं, लेकिन मुझे दूसरे विकल्प पर कोई दस्तावेज नहीं मिल रहा है क्योंकि यह एमवीसी पर लागू होता है। जब मैं इसकी जांच करता हूं, तो साइट पर निर्मित फ़ाइलों में कोई बदलाव नहीं दिखता है और मुझे प्रदर्शन में कोई वास्तविक परिवर्तन नहीं दिखता है।


फ़ंक्शन का स्थान नया हो सकता है, लेकिन फ़ंक्शन स्वयं नहीं है। यहां तक ​​कि अगर यह MVC संकलित करने का संबंध नहीं था , तो WebForms एक MVC प्रोजेक्ट में इंटरऑपरेबल होते हैं।
ग्रांट थॉमस

जवाबों:


84

ASP.NET precompiler का उपयोग करने से आपके MVC ऐप पर निम्नलिखित प्रभाव पड़ सकता है:

  • यदि आपके पास App_Code में कुछ भी है, तो इसे तैनाती से पहले DLL में रखा जाएगा। Precompiling के बिना, यह ASP.NET रनटाइम द्वारा फ्लाई पर होगा।
  • यदि आप अपने पृष्ठों को अद्यतन करने योग्य नहीं बनाते हैं (यानी उन्नत सेटिंग्स संवाद में पहले चेकबॉक्स को अनचेक करें), तो यह आपके विचारों (एएसपीएक्स और रेजर) को गतिमान करने के बजाय उन गतिशील रूप से भी संकलित करने का विकल्प देगा। डिफ़ॉल्ट (चेक की गई) सेटिंग "पूर्व-निर्धारित साइट को अपग्रेड करने योग्य होने दें" आपको संपूर्ण प्रोजेक्ट के पुनर्निर्माण के लिए अपने दृश्य सामग्री को अपडेट करने की अनुमति देता है।

यदि आपके पास App_Code में कोई फाइल नहीं है और आप चाहते हैं कि आपकी साइट अपडेटेबल रहे, तो यह ज्यादा नहीं लगता है।


7
@Elsimer आपकी .cshtml फ़ाइलें अभी भी मौजूद होंगी, लेकिन अगर उनकी सामग्री पहले से तैयार की जाती है, तो आपको उनकी सामग्री को "यह एक precompilation उपकरण द्वारा बनाई गई मार्कर फ़ाइल है, और इसे हटाया नहीं जाना चाहिए!"
जिमी

4
इसके अलावा, संपूर्ण लाभ प्रारंभिक साइट लॉन्च पर हैं, जब कंपाइलर को प्रत्येक पृष्ठ के लिए गतिशील रूप से लागू किया जाता है। पृष्ठ के एक बार (और संकलित) हिट हो जाने के बाद, उस संकलन परिणाम का उपयोग बाद के पृष्ठ भारों पर किया जाएगा, भले ही आपने पहले से तैयार न किया हो।
जिमी

15
आपके पृष्ठों को अपग्रेड करने योग्य नहीं होने का एक अतिरिक्त लाभ यह है कि वीएस आपके लाइव साइट पर बनाने से पहले आपके विचारों में टाइप त्रुटियां पाएंगे।
क्रिस

4
@ अगर आपको इस तरह की त्रुटियों को बिना precompile विकल्प के बिना रद्द कर दिया जाएगा, तो आपको अपनी परीक्षण रणनीति पर पुनर्विचार करना चाहिए।
user247702

2
@ एंडर्स लिंडन: बस अपने नियंत्रक कार्यों की वास्तविक प्रदान की गई प्रतिक्रिया का परीक्षण करें। यह रेज़र को आमंत्रित करेगा और यदि यह एक अपवाद उत्पन्न करता है, तो यह आपके परीक्षण को विफल कर देगा। हालाँकि, यह भी है कि क्यों कोड पर आपके विचार बहुत हल्के होने चाहिए । आप वास्तव में दृश्य कोड पर ठीक-ठीक इकाई परीक्षण नहीं कर सकते हैं जैसे आप एक वर्ग पर कर सकते हैं। यह बहुत ज्यादा है या तो पास या फेल है, और फिर भी, बस पास होने का मतलब है कि यह किसी भी अपवाद को उत्पन्न नहीं करता है, न कि यह वास्तव में वही करता है जो इसे माना जाता था।
क्रिस प्रैट

0

यह एक पुराना सवाल है, लेकिन मैं सिर्फ इसी तरह के मुद्दे का सामना करता हूं और कुछ साझा करने लायक महसूस करता हूं।

इस पोस्ट में मेरा त्रुटि संदेश समान है। मेरी परियोजना एमवीसी 5 है, जो दृश्य स्टूडियो 2013 के पेशेवर के साथ निर्मित है। संकलन त्रुटि: प्रकार 'ASP.global_asax' दोनों DLL में मौजूद है

मेरे मामले में, precompile विकल्प के साथ, बिन फ़ोल्डर में एक फ़ाइल, App_global.asax.dll है, और त्रुटि संदेश के ऊपर कारण है। सबसे पहले, मैं सर्वर पर App_global.asax.dll को हटा देता हूं, एप्लिकेशन पूल को पुनरारंभ करें, समस्या दूर हो गई है। फिर मैंने एक और दृष्टिकोण की कोशिश की, प्रीकम्पाइल को अनचेक करें और पुनःप्रकाशित करें, सर्वर पर फिर से भेजें, मुद्दा समाप्त हो गया है।

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