2009-08-31 11 views
6

मैं वर्तमान में कोड वितरण के लिए सबवर्जन का उपयोग करके कई डेवलपर्स के साथ एक एएसपी.NET प्रोजेक्ट पर काम कर रहा हूं, लेकिन फिलहाल यह पूरी तरह से गड़बड़ हो गया है। वह व्यक्ति जिसने सबवर्जन रिपॉजिटरी सेट अप किया है, में कॉन्फ़िगरेशन फ़ाइलें शामिल हैं जो उनके कंप्यूटर, बिन \ * निर्देशिकाओं और अन्य ऐसी चीजों के लिए विशिष्ट हैं।सबवर्जन में एएसपी.नेट वेबसाइट को संग्रहीत करने के लिए सर्वोत्तम अभ्यास?

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

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

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

कोई मशीन विशिष्ट फ़ाइलों सबवर्सन में शामिल किया जाना चाहिए। इसलिए, Web.config का केवल एक टेम्पलेट चेक किया गया है, जिसे डेवलपर्स द्वारा उनकी मशीन के अनुरूप अनुकूलित किया जाता है। यह व्यवहार डिफ़ॉल्ट रूप से विजुअल स्टूडियो 2010 में शामिल है और व्यक्तिगत कॉन्फ़िगरेशन फ़ाइलें (Web.Local.config) स्वचालित रूप से टेम्पलेट (Web.config) लागू होती है। हालांकि स्थानीय कॉन्फ़िगरेशन फ़ाइल को सबवर्सन में शामिल नहीं किया जाना चाहिए, जब तक कि यह एक विशिष्ट मशीन के लिए लागू होता है।

समाधान और परियोजना फ़ाइलों को किसी निरपेक्ष पथ नहीं होनी चाहिए।

एक इग्नोर लिस्ट में स्थापित किया जाना चाहिए।

' 
/trunk/ 
    Libraries/ 
     ThirdParty.dll 
    MyClassLibrary/ 
     bin/ [Ignore] 
     obj/ [Ignore] 
     Properties/ 
      AssemblyInfo.cs 
     SomeClass.cs 
     MyClassLibrary.csproj 
      - Holds references to third-party libraries. For example: 
       ../Libraries/ThirdParty.dll 
    MyWebApplication/ 
     bin/ 
      ThirdParty.dll [Ignore; copied by build process] 
      ThirdParty.dll.refresh 
       - Contains "../Libraries/ThirdParty.dll" 
     Default.aspx 
     Default.aspx.cs 
     Web.config [Ignore] 
     Web.config.template 
    MySolution.sln 
     - Holds list of projects. 
     - Has reference information for projects. 
' 

एक वैकल्पिक Web.config.template होगा का उपयोग कर रहे हैं: वेब साइट और एक तीसरे पक्ष के पुस्तकालय के लिए विशिष्ट एक वर्ग पुस्तकालय के साथ एक ASP.NET 2.0 वेब साइट के लिए

' 
*.user 
obj 
' 

उदाहरण फ़ाइल संरचना: के साथ शुरू करो Web.config से Local.config फ़ाइल को शामिल करना होगा, लेकिन यह कम लचीला हो सकता है।

एक वेब साइट परियोजना एक वेब अनुप्रयोग परियोजना के बजाय का उपयोग करते समय, संदर्भ प्रोजेक्ट फ़ाइल में बजाय .refresh फ़ाइलों में संग्रहीत किया जाएगा, ताकि bin/फ़ोल्डर नजरअंदाज कर दिया जाएगा।

किसी उपरोक्त सुझावों में त्रुटियों देख सकते हैं? क्या कुछ याद आ रही है? क्या किसी को अनदेखा सूची के लिए सुझाव हैं? मैंने अभी कुछ प्रविष्टियों के साथ शुरुआत की है।

उत्तर

7

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

इसके अलावा, यदि संभव हो तो, आप तोड़फोड़ करने के लिए web.config फ़ाइल जोड़ सकता है, लेकिन तत्व में appSettings साथ एक नई फ़ाइल संदर्भ: उदाहरण के लिए

<appSettings file="local.config"> 

फिर local.config फ़ाइल ने नजरअंदाज कर दिया है SVN। इस तरह मैं हमेशा काम करता हूं।

लेकिन निश्चित रूप से केवल तभी काम करता है जब प्रत्येक कॉन्फ़िगर करने योग्य पैरामीटर ऐपसेटिंग में है (कारणों में से एक मैं प्रदाता मॉडल से नापसंद करता हूं, क्योंकि सभी प्रदाताओं को कनेक्शन से कनेक्शन स्ट्रिंग प्राप्त करने की आवश्यकता होती है, और आप उन्हें पुन: कॉन्फ़िगर नहीं कर सकते appSettings से एक कनेक्शन स्ट्रिंग)

संपादित ले: troethom मुझे प्रबुद्ध और कहा, कि आप भी एक अलग फाइल

<connectionStrings configSource="ConnectionStrings.config"/>. 

तो बात यह है कि मुझे क्या करना होता है में connectionstring विन्यास सेटिंग्स ओवरराइड कर सकते हैं pla subversion नियंत्रण के तहत वास्तविक web.config फ़ाइल को सीई, लेकिन उन अन्य फ़ाइलों को जो स्थानीय स्तर पर सेटिंग्स को ओवरराइड करते हैं उन्हें svn द्वारा अनदेखा किया जाना चाहिए।

+0

2.0 वेब के लिए परियोजनाओं बाहरी विधानसभा संदर्भ/bin/निर्देशिका अकेले द्वारा निर्धारित होते हैं , इसलिए मुझे (AFAIK) .refresh फ़ाइलों को/bin/निर्देशिका में होना चाहिए। एसवीएन को बिन/* डीएलएल को अनदेखा करना संभव है, इसलिए यह कोई समस्या नहीं होनी चाहिए। मेरा इरादा कभी भी एसवीएन में बिल्ड आउटपुट शामिल नहीं करना था, यह वही है जो इन दिशानिर्देशों को रोकने के लिए हैं। मैंने वास्तव में प्रारंभ में "लोकल.कॉन्फिग" फ़ाइल आयात करने के लिए मेरे दिशानिर्देश लिखे थे, लेकिन चूंकि कॉन्फ़िगर-फ़ाइल में इतने सारे अनुभाग हैं, मैंने सोचा कि फ़ाइल की प्रतिलिपि बनाना बेहतर हो सकता है जिसे डेवलपर द्वारा कॉन्फ़िगर किया जा सकता है । – Blixt

+0

अहह - मैं उन परियोजनाओं के बिना उन 2.0 "वेब साइट" परियोजनाओं को भूल गया। मैंने उन्हें कभी पसंद नहीं किया। लेकिन आपके पास एक विकल्प है (वेब ​​एप्लिकेशन को वीएस2005 एसपी 1 में पुन: प्रस्तुत किया गया था)। यदि आप "वेब साइट" बनाते हैं, तो आपके पास कोई प्रोजेक्ट फ़ाइल नहीं है, और बिन डायर आपको संदर्भ देता है, या आप एक "वेब एप्लिकेशन" बना सकते हैं जहां संदर्भ परियोजना प्रोजेक्ट द्वारा परिभाषित किए जाते हैं, और फिर आप पूरे बिन को अनदेखा कर सकते हैं फ़ोल्डर। लेकिन मुझे svn में "वेब साइट" प्रोजेक्ट रखने के साथ अधिक अनुभव नहीं है। – Pete

+0

पीट, आप अपने कनेक्शन स्ट्रिंग को एक अलग कॉन्फ़िगरेशन फ़ाइल में भी डाल सकते हैं (जब तक कि आप अभी भी .NET 1.1 का उपयोग नहीं कर रहे हैं)। बस '' का उपयोग करें। –

1

आपको .refresh फ़ाइलों को जोड़ना चाहिए; वास्तविक डीएलएल नहीं।

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

विजुअल एसवीएन और अन्य सबवर्जन क्लाइंट जो केवल फ़ाइल एक्सटेंशन को देखते हैं उन्हें यह जानकारी ASP.Net से नहीं मिलती है।

(नोट: यदि आप .refresh फ़ाइल निकालने के लिए, दृश्य स्टूडियो फ़ाइलों की सूची है कि के लिए प्रतिबद्ध होना चाहिए करने के लिए DLL जोड़ देगा)

+0

तो '.refresh' फ़ाइलों का उपयोग करने के लिए उपरोक्त मेरा सुझाव ASP.NET 'bin' फ़ोल्डर में DLL संदर्भों को शामिल करने का अनुशंसित तरीका है? – Blixt

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

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