2010-08-12 12 views
9

हमारे आवेदन के विकास के दौरान हम एक शाखा संरचना का उपयोग करते हैं और जब हम एक और टीम विकसित कर रहे हैं, तो इसके साथ सामग्री बनाने के लिए हमारे सॉफ्टवेयर के पहले निर्माण का उपयोग कर रहे हैं।परियोजना संदर्भ पथ?

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

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

मैं थोड़ी देर के लिए खोज कर रहा हूं और ऐसा करने के तरीके खोजने के लिए प्रतीत नहीं होता है। किसी को स्रोत नियंत्रण में और बाहर संदर्भ पथ को मजबूर करने के तरीके के बारे में पता है?

हम यहां विजुअल स्टूडियो 2008 और टीएफएस 2008 से बात कर रहे हैं।

चीयर्स, एंटोन।

+0

विजुअल स्टूडियो 2010 संदर्भ पथ में डिफ़ॉल्ट रूप से रिश्तेदार के रूप में संग्रहीत किया जाता है, इसलिए यदि यह आपके साथ हो रहा है तो कुछ और गलत है। मेरे मामले में यह था कि मैं वर्जन नियंत्रण से डीएलएस को अनदेखा कर दूंगा ताकि मैं समाधान संकलित कर सकूं लेकिन मेरे कार्यकर्ता नहीं कर सके। –

उत्तर

12

ठीक है, मुझे अच्छी रात की नींद के बाद सिर में थोड़ा स्पष्ट लगता है, तार्किक कदम उठाया, अर्थात् जांच करें कि वास्तव में जानकारी कहां संग्रहीत की गई थी और कैसे। यह पता चला कि प्रोजेक्ट के फ़ोल्डर में प्रोजेक्ट के लिए .user फ़ाइल में जानकारी संग्रहीत की गई थी और क्योंकि इस फ़ाइल में ट्यूरेंस में mbsuild xml शामिल है।

  • संदर्भ पथ बनाएँ के रूप में मैं किसी भी काम के बिना दोनों परिदृश्यों की सुविधा के लिए यह आवश्यक:

    मैं तो इस प्रकार मैं चाहता था किया था।

  • प्रोजेक्ट के लिए ब्राउज़ करें।उपयोगकर्ता फ़ाइल
  • संदर्भ समूह को संदर्भ पृष्ठ
  • सभी आवश्यक परियोजनाओं में संपत्ति समूह को चिपकाएं .csproj xml।
  • पुनः लोड करें और बनाएं।

हो गया।

+0

मैं यह जानने के बाद यह कोशिश कर रहा था कि .user फ़ाइल में रेफरेंसपाथ नोड ऐसा प्रतीत होता है जो मैं किसी प्रोजेक्ट फ़ाइल में देखता हूं। अब मैं इस संभावित दिशा में थोड़ा और आत्मविश्वास महसूस कर रहा हूं। – jpierson

+0

एक अतिरिक्त नोट। जब आप पूरे प्रॉपर्टी ग्रुप की प्रतिलिपि बनाते हैं तो इसे कुछ परिस्थितियों में हटा दिया जाएगा (अभी तक उन्हें बिल्कुल निश्चित नहीं किया गया है)। जब आप किसी मौजूदा प्रॉपर्टी ग्रुप में रेफरेंसपाथ हनोडे डालते हैं तो इसे हटाया नहीं जाएगा। कम से कम यह मेरे लिए ऐसा लगता है। – Anton

0

संदर्भ * .csproj फ़ाइल में संग्रहीत हैं। नोड्स हैं ItemGroup/संदर्भ ...

थॉमस

+0

संदर्भ हैं और उन हिंटपाथ वे हैं जिन्हें मैं खाली करता हूं, इसलिए सामग्री टीम जीएसी में असेंबली के खिलाफ निर्माण करेगी। परियोजना का संदर्भ पथ नहीं है (या ऐसा प्रतीत नहीं होता है) ... और यही सवाल है कि सवाल क्या है। – Anton

0

यह बहुत सरल है - हम हमारी दुकान में यह करते हैं।

सबसे पहले, कार्यक्षेत्र में (विंडोज एक्सप्लोरर का उपयोग करके, समाधान फ़ोल्डर पर ब्राउज़ करें), एक फ़ोल्डर बनाएं। हम इसे "संदर्भित असेंबली" नाम देते हैं। यहां, अपने सभी डीएलएल ड्रॉप करें।

अब, समाधान में, विंडोज एक्सप्लोरर में बनाए गए एक से मेल खाने के लिए एक नया फ़ोल्डर जोड़ें। उस फ़ोल्डर में, जो आपने अभी छोड़े गए सभी डीएलएल जोड़ें।

अंत में, प्रत्येक प्रोजेक्ट में, समाधान में जोड़े गए डीएलएल का उपयोग करने के लिए अपने संदर्भ सेट अप करें।

अब आपकी परियोजना डीएलएल का संदर्भ देती है जो समाधान का हिस्सा हैं, ताकि जब निर्माण चलता है, तो यह निर्माण उत्पन्न करने के लिए स्रोत नियंत्रण से डीएलएल को पकड़ लेगा।

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

+0

मैंने पहले ही यह माना था लेकिन यह उस सामग्री टीम के लिए कुछ अतिरिक्त काम पेश करता है जिसे मैं रोकना चाहता हूं, लेकिन मैं कुछ और खोज कर रहा हूं और मुझे ऐसा करने का एक आसान तरीका नहीं दिख रहा है, इसलिए मैं समाप्त कर सकता हूं उसका इस्तेमाल कर रहे हैं। सबसे पहले मैं कुछ और प्रयोग करूँगा :) – Anton

+0

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

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