2013-02-09 59 views
7

पृष्ठभूमि त्रुटि CS0433में बड़े precompiled Asp.net वेबसाइट परियोजना

मैं एक बहुत बड़े asp.net वेबसाइट परियोजना में ले लिया गया है। पुरानी तैनाती प्रक्रिया आईआईएस को .cs, .aspx, और .ascx फ़ाइलों की प्रतिलिपि बनाना था और इसे फ्लाई पर बनाना था। मैं इसे प्रीकंपाइल करना चाहता हूं और इसे स्वचालित रूप से तैनात करने के लिए टीमसिटी का उपयोग करना चाहता हूं। मैंने कुछ अन्य वेबसाइट परियोजनाओं के साथ ऐसा किया है।

इस परियोजना में लगभग 350 उपयोगकर्ता नियंत्रण हैं जो फ़ोल्डर्स में अच्छी तरह व्यवस्थित हैं लेकिन पूरे स्थान पर उपयोग किए जाते हैं। एक दूसरे से, अन्य फ़ोल्डरों से संदर्भित नियंत्रण ... मूल रूप से एक परिपत्र फ़ाइल संदर्भ दुःस्वप्न।

मेरे प्रयास

मेरा पहला प्रयास दूसरों की तरह यह निर्माण किया गया था। पूरे बनाम2012 समाधान MSbuild। मैं "सर्कुलर फ़ाइल संदर्भों की अनुमति नहीं है" के टन में भाग गया। यह पता लगाने के लिए कि इन सभी अच्छी तरह से संगठित नियंत्रण हर जगह उपयोग किए जाते हैं और परिपत्र संदर्भ पूरे स्थान पर हैं। I read this और मैंने "web.config" को compilation batch="false" पर स्विच किया और फिर बिल्ड में साइट को "अपडेट करने योग्य नहीं" और "निश्चित नामकरण असेंबली का उपयोग करें" पर सेट किया। साइट बनाता है लेकिन मेरे क्वाड कोर, एसएसडी, 16 जीबी राम देव बॉक्स पर संकलन करने के लिए सचमुच 25 मिनट लेता है। यह अस्वीकार्य निर्माण समय है।

मुझे पता है कि अगर मैं "निश्चित नामकरण असेंबली का उपयोग" बंद करता हूं तो साइट काफी तेज़ी से निर्माण करेगी। (मैंने इसे छोटी वेबसाइटों में से एक पर साबित कर दिया है। यह 4 मिनट से 45 सेकंड तक चला गया)।

c:\Projects\Web\Site.master(146): error CS0433: The type 'ASP.usercontrols_modules_viewprofilepopup_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_viewprofilepopup.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_xa514so5.dll' 

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_site.master.cdcab7d2.0.cs(927): error CS0433: The type 'ASP.usercontrols_modules_viewprofilepopup_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_viewprofilepopup.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_xa514so5.dll' 

error ASPPARSE: c:\Projects\web\Web\UserControls\Modules\JobsLeftMenu.ascx(128): error CS0433: The type 'ASP.usercontrols_modules_imagesgallerymodule_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_imagesgallerymodule.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_nvrj33tx.dll' 

error ASPPARSE: c:\Projects\web\Web\Site.master(146): error CS0433: The type 'ASP.usercontrols_modules_viewprofilepopup_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_viewprofilepopup.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_xa514so5.dll' 

यहाँ सटीक aspnet_compiler.exe आदेश है:: मैं अजीब निर्माण त्रुटियों हो रही है जब मैं उस निकालें सेटिंग कर

aspnet_compiler.exe -v/वेब -p वेब \ -f " प्रीकंपिल्ड वेब "

मैंने जवाब के लिए चारों ओर गुगल किया। नहीं, वे कहीं भी कोड में डुप्लीकेट नहीं हैं। वे अलग-अलग फ़ोल्डर्स में होते हैं, जो विभिन्न फ़ोल्डरों में अन्य नियंत्रणों द्वारा उपयोग किए जाते हैं। मुझे लगता है कि यह परिपत्र फ़ाइल संदर्भ वस्तु के कारण है। अच्छी बात है। मैंने इनमें से कुछ का उपयोग यह देखने के लिए हटा दिया कि यह निर्माण करेगा या नहीं, निर्माण प्रक्रिया सिर्फ इस तरह की अन्य त्रुटियों पर ही चलती है। मैं इसे समायोजित करने के लिए केवल कोड को हटा नहीं सकता ... मैं "निश्चित नामकरण असेंबली का उपयोग" चालू किए बिना इन त्रुटियों को कैसे ठीक कर सकता हूं?

बात की मैं

  1. की कोशिश की है को साफ कर दिया Temporary ASP.NET Files सब मेरी प्रणाली में।
  2. दृश्य स्टूडियो 2012 के भीतर से "प्रकाशित" करने का प्रयास किया। वही त्रुटियां।
  3. साइट को वेब एप्लिकेशन में कनवर्ट करने का प्रयास किया लेकिन बहुत सारी त्रुटियां मिलीं (600+ के ऊपर)।
  4. फिर से: सुनिश्चित करें कि कोई डुप्लिकेट फ़ाइलें और कोड नहीं था जो इसे समझाएगा। मैंने पाठ को संपूर्ण समाधान फ़ोल्डर को नोटपैड ++ के साथ खोजा ताकि यह सत्यापित किया जा सके कि उसी नाम के साथ कोई अन्य नियंत्रण नहीं था।/m /p:CreateHardLinksForCopyLocalIfPossible=true /p:BuildInParallel=true

मैं स्टंप्डया हूँ और लगता है कि करने के लिए अपने ही एकमात्र विकल्प एप्लिकेशन के पुनर्लेखन के लिए, त्रुटियों माध्यम से आगे बढ़ना के रूप में मैं एक वेब अनुप्रयोग में बदलने का है लगते हैं:

  • Checked this.
  • मैं MSBuild प्रदर्शन में तोड़ मरोड़ कर दिया पर है , या वेबसर्वर को स्रोत तैनात करना जारी रखें लेकिन इसे स्वचालित करें।

  • +0

    क्या आपके द्वारा aspnet_compiler चलाने से प्राप्त त्रुटि के ऊपर सूचीबद्ध त्रुटि आउटपुट है? मैं इसके बजाय परिपत्र संदर्भ त्रुटि देखने की उम्मीद की होगी। –

    +0

    @DavidEbbo यह त्रुटि web.config के साथ चलने के कारण होती है: संकलन बैच = "झूठी" और "निश्चित नाम" के बिना msbuild। –

    +0

    तो फिर 'परिपत्र फ़ाइल संदर्भों की अनुमति नहीं है' त्रुटि को देखने के बजाय आप किस स्थिति में हैं? एक छोटे परिपत्र परिदृश्य का परीक्षण करते समय, मुझे यही मिलता है। –

    उत्तर

    7

    मुझे पता है कि आपने पहले से ही कोशिश की है, लेकिन परिपत्र संदर्भों से परहेज करना आपकी सबसे अच्छी शर्त होगी। ध्यान दें कि शब्द 'परिपत्र संदर्भ' वास्तव में बिल्कुल सही नहीं है। बिल्डिंग सिस्टम निर्देशिका स्तर पर सर्कुलर संदर्भों के बारे में शिकायत करता है, फ़ाइल स्तर पर नहीं।

    उदा। sub1\page.aspxsub2\uc1.ascxsub1\uc2.ascx

    का उपयोग करता है फ़ाइल स्तर पर उपयोग करता है, वहाँ कोई चक्र है, लेकिन निर्देशिका स्तर पर है, और इस तरह से काम करता है बैचिंग के साथ गड़बड़।

    हालांकि ऐसा लगता है कि आपके पास इन परिस्थितियों में से कई को अपरिवर्तनीय बनाने के लिए है, तो मैं शर्त लगाता हूं कि यदि आप 'निर्देशिका मंडल' के विवरण को देखते हैं, तो यह उन सभी के लिए नीचे नहीं है। संदर्भ ग्राफ को चित्रित करने से चीजों को समझने में मदद मिल सकती है।

    फिर आपको अपराधियों को एक अलग फ़ोल्डर में स्थानांतरित करने और तदनुसार लिंक बदलने की आवश्यकता है।

    हां, यह एक दर्दनाक प्रक्रिया है, लेकिन यह संभवतः हल करने योग्य है।

    +0

    सभी नियंत्रणों को एक फ़ोल्डर में स्थानांतरित करने से भी समस्या ठीक हो जाएगी? साथ ही, क्या यह "द टाइप 'ब्ला' दोनों को ठीक करेगा 'blah' 'त्रुटि में मौजूद है? –

    +1

    हां, सभी नियंत्रणों को एक फ़ोल्डर में ले जाना इसे ठीक करेगा, हालांकि इसमें बहुत से संदर्भों को समायोजित करना शामिल हो सकता है। यह '2 स्थानों में मौजूद प्रकार' त्रुटि को भी ठीक करेगा। ध्यान दें कि आपके पास पार्स टाइम संदर्भ (@register निर्देश) और रनटाइम संदर्भ (उदा। लोडकंट्रोल()) दोनों हो सकते हैं। संकलन के लिए आपको केवल पहले भाग को ठीक करने की आवश्यकता है, लेकिन आपको वास्तव में चलाने के लिए बाकी की आवश्यकता होगी। –

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

    • कोई संबंधित समस्या नहीं^_^