2013-02-14 7 views
7

हमारे पास एक प्रोजेक्ट है और यदि दृश्य '.cshtml फ़ाइलों में कुछ भी गलत है तो संकलन समय त्रुटियों को उत्पन्न करने के लिए दृश्य बनाना चाहते हैं।एएसपी.नेट एमवीसी एमवीसीबिल्डव्यू संकलन समय में तेजी से बढ़ रहा है

फिर भी, समय बढ़ जाती है काफी संकलन:

  • MvcBuildViews = true 62 सेकंड
  • MvcBuildViews = false 9 सेकंड

यह कुछ स्वीकार्य है लेता है लेता है? क्योंकि वृद्धि काफी कठोर है जिसमें हम इस तरह के संकलन के समय का इंतजार नहीं कर सकते हैं। किसी भी तरह से हम इस तरह के संकलन में सुधार कर सकते हैं?

अब तक परियोजना में लगभग 130 दृश्य & आंशिक दृश्य (.cshtml फ़ाइलें) शामिल हैं। क्या यह बड़ा/मध्यम/छोटा माना जाता है?

+0

http://www.luisrocha.net/2011/10/avoiding-mvcbuildviews-build-time.html –

+0

स्टैक ओवरफ्लो के वैकल्पिक प्रयास करें: [StackExchange.Precompilation] (https://stackoverflow.com/a/35977582/1141876) – fiat

उत्तर

2

हम एक ही समस्या से जूझ रहे थे। हमने एकीकरण टेस्ट और यूएक्स टेस्ट के दौरान हमारे ऊपर रेंगने वाले स्पष्ट मुद्दों को पकड़ने के लिए दृश्यों को संकलित करना शुरू किया। इससे भी बदतर था कि किसी भी तरह से उत्पादन में crept।

लेकिन, जैसा कि आपने देखा, हमारे निर्माण के समय असहिष्णु हो गए। आप की तरह, हमारे डेवलपर्स अनगिनत बार बनाते हैं और यह हमारे दिन का एक बड़ा हिस्सा बन गया है। हमारे पास दोपहर के भोजन के बाद परीक्षण के बारे में चुटकुले थे इसलिए जब हम बाहर थे तो निर्माण किया जा सकता था।

हम अंततः यूएक्स-परीक्षण से पहले इमारत में स्थानांतरित हो गए।

अब हम प्री-कंपाइलिंग की तरफ बढ़ रहे हैं। हमारी टीम के केवल एक लड़के ने इसे अभी अपनाया है और स्पष्ट रूप से पूर्व-संकलन बिल्ड (वृद्धिशील बनाम कुल) से बेहतर रूप से बेहतर हैं। और सेटअप मूल रूप से एक nuget fetch है।

ये लेख एक अच्छी शुरुआत

http://stacktoheap.com/blog/2013/01/19/precompiling-razor-views-in-asp-dot-net-mvc-3/

http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

+0

धन्यवाद, यह जांच लेंगे! :) –

11

खैर मैं अपने आप में एक अच्छी बात है विचारों को संकलित करने के संभावना होने लगता है कि होना चाहिए, लेकिन मुझे लगता है कि लंबे समय तक या तो इंतजार नहीं कर सकता। तो मुझे क्या करना पसंद करते हैं रिलीज की ProperyGroup अंदर कि MvcBuildViews = true जोड़ने के लिए इतना है कि आप केवल रिलीज समय और तैनाती से पहले देखा गया संकलित है

संपत्ति समूह इस तरह दिखना चाहिए:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 

तो अपने

<MvcBuildViews>true</MvcBuildViews> 

इस रिलीज ब्लॉक के अंदर रखें। इस तरह आप अभी भी एक बार अपने विचारों को संकलित करते हैं और हर बार जब आप डीबग करने का प्रयास नहीं करते हैं ...

+0

हमने उस दृष्टिकोण का भी उपयोग किया। कानूनी। –

0

डीवीग कॉन्फ़िगरेशन के लिए csproj में गलत करने के लिए MvcBuildViews को सेट करें।

<MvcBuildViews Condition=" '$(Configuration)' != 'Debug' ">true</MvcBuildViews> 

मेनू में निम्न बाहरी कमांड जोड़े "उपकरण/बाहरी उपकरण"

Title: Compile with MVC views 
Command: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe 
Arguments: $(SolutionDir)$(SolutionFileName) /p:MvcBuildViews=true 
Initial directory: $(SolutionDir) 
Use Output window: checked 

फिर उस के लिए एक शॉर्टकट जोड़ें: उपकरण में जाओ/विकल्प/ENVIRONNEMENT/कुंजीपटल जानें आदेश "उपकरण .xternalCommandX "जहां एक्स आपके बाहरी कमांड की स्थिति है जहां आपने इसे अभी जोड़ा है। एक कुंजी असाइन करें (पूर्व: Ctrl-shift-1)

अब स्पष्टीकरण: हमें एक ही समस्या है। हम ज्यादातर समय विचारों को संकलित नहीं करना चाहते हैं, लेकिन हम कोड में जांच करने से पहले उन्हें संकलित करना चाहते हैं, इस तरह हम 50 या कुछ में से 1 बार दृश्य संकलित करते हैं। इसे स्वीकार करने के लिए, मैंने mvbubuildviews पैरामीटर के साथ msbuild को बाहरी टूल कमांड जोड़ा। एकमात्र कमी यह है कि दृश्य स्टूडियो की त्रुटियों की विंडो में त्रुटियों को सूचीबद्ध नहीं किया गया है, आपको आउटपुट विंडो को देखना होगा और यदि कोई हो तो त्रुटियों पर डबल क्लिक करें।

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