हम एक प्रणाली का उपयोग करते हैं जो इस पृष्ठ पर मौजूदा उत्तरों में से कई को जोड़ती है, साथ ही स्कॉट हंसेलमैन के इस सुझाव पर आकर्षित करती है ।
संक्षेप में, हमने जो किया वह एक सामान्य ऐप था ।config / web.config, और व्यक्तिगत फ़ाइलों में अधिकांश विशिष्ट सेटिंग्स, जैसा कि यहां अन्य उत्तरों द्वारा सुझाया गया है। हमारे SMTP सेटिंग्स के लिए, app.config शामिल हैं
<system.net>
<mailSettings>
<smtp configSource="config\smtp.config" />
</mailSettings>
</system.net>
इस फ़ाइल में है स्रोत नियंत्रण में। हालाँकि, इस तरह की अलग-अलग फाइलें, नहीं हैं:
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
यह काफी नहीं है जहां कहानी समाप्त होती है। नए डेवलपर्स या एक नए स्रोत की स्थापना के बारे में क्या? कॉन्फ़िगरेशन का बड़ा हिस्सा अब स्रोत नियंत्रण में नहीं है, और इसे उन सभी .config फ़ाइलों को मैन्युअल रूप से बनाने के लिए एक दर्द है जिनकी उन्हें ज़रूरत है। मैं स्रोत है कि कम से कम सही बॉक्स से बाहर संकलन करना पसंद करेंगे।
इसलिए हम स्रोत नियंत्रण में .config फ़ाइलों का एक संस्करण रखते हैं, जिसका नाम .config.default फ़ाइलें हैं। एक ताजा स्रोत का पेड़ इस तरह दिखता है:
फिर भी, डेवलपर के लिए वास्तव में कोई उपयोग नहीं है, क्योंकि विज़ुअल स्टूडियो के बाद वे सिर्फ अर्थहीन पाठ फ़ाइलें हैं। इसलिए बैच फ़ाइल, copy_default_config.bat
.config.default फ़ाइलों से .config फ़ाइलों का एक प्रारंभिक सेट बनाने का ख्याल रखती है:
@echo off
@REM Makes copies of all .default files without the .default extension, only if it doesn't already exist. Does the same recursively through all child folders.
for /r %%f in (*.default) do (
if not exist "%%~pnf" (echo Copying %%~pnf.default to %%~pnf & copy "%%f" "%%~pnf" /y)
)
echo Done.
स्क्रिप्ट सुरक्षित रूप से फिर से चलने योग्य है, ऐसे डेवलपर्स में जिनके पास पहले से ही उनकी .config फाइलें हैं, उन्हें अधिलेखित नहीं किया जाएगा। इसलिए, कोई भी इस बैच फ़ाइल को पूर्व-बिल्ड इवेंट के रूप में चला सकता है। .Default फ़ाइलों के मान एक नए इंस्टाल के लिए बिल्कुल सही नहीं हो सकते हैं, लेकिन वे एक उचित शुरुआती बिंदु हैं।
अंतत: प्रत्येक डेवलपर जो समाप्त करता है वह कॉन्फिग फाइलों का एक फ़ोल्डर होता है जो कुछ इस तरह दिखता है:
यह थोड़ा जटिल लग सकता है, लेकिन यह निश्चित रूप से एक-दूसरे के पैर की उंगलियों पर कदम रखने वाले डेवलपर्स की परेशानी के लिए बेहतर है।