2010-02-23 12 views
8

मेरे पास एक साइटकोर/एएसपी.नेट परियोजनाएं हैं जो मैं विकसित कर रहा हूं। आज किसी बिंदु पर मैंने अनजाने में समाधान संदर्भ मेनू में "साफ" विकल्प मारा। मुझे यह समझने में थोड़ी देर लग गई कि मेरी साइट निराशाजनक क्यों टूट गई थी। बाहर निकलता है विजुअल स्टूडियो आगे बढ़ गया और \ bin dir से कई आवश्यक असेंबली हटा दी जो मेरी परियोजना का हिस्सा नहीं हैं।मैं तृतीय पक्ष बाइनरी को हटाने से विजुअल स्टूडियो 2005 के "क्लीन" कमांड को कैसे रोक सकता हूं?

मैं इसे फिर से होने से कैसे रोक सकता हूं?

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

Sitecore.Analytics.dll
Sitecore.Client.XML
Stimulsoft.Base.dll
Stimulsoft.Report.dll
Stimulsoft.Report.Web .dll
Stimulsoft.Report.WebDesign.dll
Telerik.Web.UI.dll

अद्यतन: तुम्हें पता है क्या ... मुझे लगता है कि क्या मैं यहाँ में वास्तव में अधिक रुचि है WH है वाई विजुअल स्टूडियो ज्यादातर फाइलों को छोड़ रहा है और केवल इन विशिष्ट लोगों को हटा रहा है।

+0

क्या यह बिन फ़ोल्डर में सबकुछ हटा नहीं रहा है? –

+0

यह निश्चित रूप से नहीं है। अधिकांश साइटकोर बाइनरी (इंस्टॉलर द्वारा रखे गए) में व्यवहार में रहते हैं। – Bryan

+0

हटाए जा रहे फ़ाइलों में से, क्या वे सभी परियोजनाओं का आउटपुट हैं, या परियोजना की निर्भरता के रूप में संदर्भित हैं? –

उत्तर

8

आपकी समस्या का सही उत्तर इस बात पर निर्भर करेगा कि आप असेंबली का संदर्भ कैसे दे रहे हैं और आप उन्हें अपने प्रोजेक्ट आउटपुट में कैसे शामिल करते हैं। एक परियोजना द्वारा उत्पन्न

bin और obj फ़ोल्डरों सबसे अच्छा "उत्पादन" फ़ोल्डर माना जाता है; इन फ़ोल्डरों में केवल परियोजना निर्माण द्वारा उत्पादित फाइलें होनी चाहिए।

जब आप किसी प्रोजेक्ट का क्लीन या पुनर्निर्माण करते हैं, तो इन मध्यस्थों और सभी संकलित फ़ाइलों को इन फ़ोल्डरों से हटा दिया जाता है।

आपको यह होना चाहिए आरामदायक होना चाहिए।

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

संकलित असेंबली का संदर्भ देने का पसंदीदा तरीका उन्हें अपने स्रोत फ़ोल्डर्स के अंदर कहीं भी जोड़ना है। वहां से, उन्हें स्रोत नियंत्रण प्रणाली में आसानी से किसी अन्य फ़ाइल के रूप में जोड़ा जा सकता है और उन पर निर्भर परियोजनाओं द्वारा संदर्भित/प्रतिलिपि बनाई जा सकती है। मेरे काम में, हमारे पास "पुस्तकालय" फ़ोल्डर है जिसमें हमारे समाधान पदानुक्रम में कई परियोजनाओं द्वारा संदर्भित कई तृतीय-पक्ष असेंबली शामिल हैं।/पुस्तकालय/

  • /परियोजनाएं/मेरे समाधान

    • /परियोजनाएं/मेरे समाधान/
    • /परियोजनाएं/मेरे समाधान:

      इस तरह एक स्रोत पेड़ का उपयोग कर और देख अगर यह आप के लिए काम करता है की कोशिश करो/परियोजना ए/

    • /परियोजनाएं/मेरे समाधान/परियोजना बी/
  • +0

    हीरो ... आपका उत्तर सतह पर समझ में आता है ... कम से कम, यह संभव है कि विजुअल स्टूडियो * को कैसे व्यवहार करना चाहिए। लेकिन यह स्पष्ट रूप से नहीं है, क्योंकि साफ/पुनर्निर्माण बिन डीआईआर में अन्य डीएलएल के बहुत सारे पत्ते छोड़ देता है जो मेरे प्रोजेक्ट द्वारा निर्मित या संदर्भित नहीं होते हैं। मेरी परियोजना की स्थापना साइटकोर की तरह की जाती है। – Bryan

    +0

    यदि आप मैन्युअल रूप से 'बिन' निर्देशिका हटाते हैं और एक पुनर्निर्माण करते हैं, तो परिणाम क्या है? –

    +0

    आपदा। साइटकोर अनुशंसा करता है कि आपकी परियोजना रूट वेबसाइट की जड़ हो ... जहां उसने कई डीएलएल को \ bin निर्देशिका में स्थापित किया है। बिन डीआईआर को हटाने से इन सभी को हटा दिया जाएगा और आपके वेब ऐप को नष्ट कर दिया जाएगा। – Bryan

    1

    मेरा मानना ​​है कि यदि आप इन फ़ाइलों को बिन के अलावा अन्य उपनिर्देशिका में रखते हैं, तो विजुअल स्टूडियो उन्हें हटा नहीं देगा। आप अभी भी अपनी तैनाती का नया उपनिर्देशिका हिस्सा बना सकते हैं।

    5

    डीएलएस को एक अलग निर्देशिका में रखें। आप शायद उन्हें परियोजना के हिस्से के रूप में नहीं चाहते हैं। नई निर्देशिका से डीएलएस का संदर्भ लें। जब आप डीएलएस संकलित करते हैं तो बिन निर्देशिका में कॉपी किया जाएगा।

    मैं कई परियोजनाओं के साथ काम करता हूं और इस परियोजना के लिए तीसरे पक्ष के डीएलएस को स्टोर करने के लिए अपनी परियोजनाओं की जड़ पर एक बिन निर्देशिका रखता हूं।

    उदाहरण निर्देशिका संरचना:

     
    MyProjects 
    - bin 
        - 3rdParty.dll 
    - Project1 
    - Project2 
    - ProjectN 
    

    यह सभी परियोजनाओं प्रत्येक परियोजना में dll कॉपी करने के लिए बिना 3 पार्टी DLLs के लिए एक प्रसिद्ध संदर्भ स्थान की अनुमति देता है।

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

    +0

    हां, यह अच्छा काम करेगा अगर इन डीएलएल को वास्तव में मेरे प्रोजेक्ट द्वारा संदर्भित किया गया था और मैं एएसपी.नेट आवेदन पर काम नहीं कर रहा था। – Bryan

    4

    साइटकोर के मामले में, बस संदर्भ (Sitecore. कर्नेल, Sitecore.Client, आदि) की संपत्ति सेट करना सुनिश्चित करें: 'कॉपी स्थानीय' = झूठी।

    +0

    यह अच्छा सर आपका जवाब है, साइटकोर दस्तावेज़ और प्रशिक्षण इसे कॉल करें। – techphoria414

    5

    हम हमेशा परियोजना Sitecore युक्त फ़ाइल के लिए एक AfterBuild घटना जोड़ें।

    <Target Name="AfterBuild"> 
        <CreateItem Include="$(SolutionDir)\Third Party\Sitecore\*.*"> 
         <Output TaskParameter="Include" ItemName="FilesToArchive" /> 
        </CreateItem> 
        <Copy SourceFiles="@(FilesToArchive)" DestinationFolder="$(TargetDir)\%(FilesToArchive.RecursiveDir)" /> 
        </Target> 
    

    जहां CreateItem शामिल है वह तरीका है जहां आपने अपनी साइटकोर बाइनरी रखी है।

    +0

    +1 एमएसबिल्ड के समझदार उपयोग के लिए। यद्यपि कॉन्फ़िगरेशन के इस टुकड़े को कहां रखना है, इस पर आप कुछ विवरण जोड़ना चाहेंगे :) –

    0

    ठीक है, मैं आगे बढ़ने जा रहा हूं और अपने स्वयं के प्रश्न का उत्तर दूंगा, क्योंकि यह अब तक का सबसे सरल जवाब जैसा लगता है। मैंने असेंबली को प्रश्न में केवल पढ़ने के रूप में चिह्नित किया। अब वे साफ नहीं हो जाते हैं।

    अभी भी सोच रहा है कि क्यों अधिकांश दूसरों को हटाया नहीं जाता है।

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