यहां बताया गया है कि हम अपनी कंपनी में इसके खिलाफ कैसे रक्षा करते हैं। (आपका लाभ भिन्न होगी!)
किसी भी गैर-प्रणाली (या अन्यथा गैर GAC) संदर्भ हमारे डेव सर्वर है, जो हर डेवलपर उनके डब्ल्यू को मैप किया गया है से आते हैं: ड्राइव। हमारे पास एक सामान्य DLL निर्देशिका है, जिसमें क्लाइंट (या विक्रेता) द्वारा उपनिर्देशिकाएं, और आगे की उप-निर्देशिकाएं उचित हैं। कोई डीएलएल कभी स्रोत नियंत्रण में संग्रहीत है, कभी-कभी इन्फ्राजिस्टिक्स द्वारा आवश्यकतानुसार license.dll को छोड़कर।
विक्रेता-प्रदान की पुस्तकालयों (EntLib, Infragistics, आदि) के लिए, नीति के रूप में हम डब्ल्यू से संदर्भ: ड्राइव। अवधि। कहीं भी किसी और से संदर्भ देने के लिए अधिकृत नहीं है। यह प्रोजेक्ट फ़ाइलों में संकेत को एक सामान्य पथ पर संकेत देता है।
इन-हाउस लाइब्रेरी (क्लाइंट और आंतरिक परियोजनाओं) के लिए, हमारी निरंतर एकीकरण प्रक्रिया डीएलएल को इस निर्देशिका की उचित शाखा में आउटपुट करती है - फिर, जहां हमारे सभी संदर्भ आते हैं।
यह, (स्थानीय डीबगिंग के लिए) हमारे स्थानीय संकलन समय धीमा करता वी.एस. हर बार सर्वर के विरुद्ध इन स्वचालित रूप से ताज़ा होगी के रूप में। यह एक परेशानी है (कभी-कभी एक परियोजना को स्थानीय रूप से निर्माण करने में 5 या 6 मिनट लग सकते हैं), लेकिन अलग-अलग संदर्भों का उपयोग करके लोगों के आसपास काम करना एक आवश्यक बुराई है। यहां का लाभ यह है कि जैसे ही कोई उन संदर्भों में से किसी एक के लिए कोड में चेक करता है, सीआई सर्वर एक बिल्ड को बंद कर देता है और हर कोई इसे जल्दी से खराब कर देता है।
यह करने के लिए चाल एक स्थिर, repeatable निर्माण प्रक्रिया और एक सतत एकीकरण सर्वर है। हम CruiseControl.NET का उपयोग कर रहे हैं, NAnt के साथ एकीकृत है, लेकिन अपने पसंदीदा सीआई सर्वर डालें और यहां टूल बनाएं।
अभी तक हमारे पास इस प्रक्रिया के परिणामस्वरूप शून्य समस्याएं हैं, सिवाय इसके कि जब बिल्ड सर्वर हमारे स्रोत नियंत्रण प्रणाली (जिसे डेमन स्पॉन के नाम से भी जाना जाता है, मेरी हाल की टिप्पणियों में से कई को देखते हैं) बहु फ़ाइल चेक-इन। (जैसा कि डेमन स्पॉन ट्रांजैक्टेड चेक-इन का समर्थन नहीं करता है।) हालांकि, यह एक बहुत दुर्लभ घटना है - शायद हर 5 या 6 सप्ताह में। और तत्काल एक बल पुनर्निर्माण के बाद इसका ख्याल रखता है।
बस कुछ विचार ... इस तकनीक को लोगों को आपके स्रोत नियंत्रण को खराब करने से रोकना चाहिए - और एक अतिरिक्त बोनस के रूप में, अपने स्रोत नियंत्रण के आकार को कम करें क्योंकि आप डीएलएल में जांच नहीं करेंगे, बस dll.refresh फ़ाइलें।
हाँ, यह बेकार है, यही कारण है कि मैंने कभी भी जीएसी में कुछ भी नहीं रखा। –
यह भी लगता है कि समस्या आपके देवताओं के साथ है, हो सकता है कि आप उन्हें यह गलती न करने के लिए कुछ भी कर सकें - हर बार कोई यह गलती करता है कि वह 5 डॉलर का भुगतान करता है - इससे उन्हें याद रखने में मदद करनी चाहिए :) –
मुख्य मुद्दा था DevExpress नियंत्रण जैसे GAC'd असेंबली के साथ। हमने तृतीय पक्ष असेंबली के साथ lib फ़ोल्डर को अपडेट करने के लिए 1 व्यक्ति को जिम्मेदार ठहराया और किसी और को स्थापित करने की अनुमति नहीं दी गई। उन नियंत्रणों के लिए दर्द का प्रकार, लेकिन यह काम किया। – NotMe