वहाँ web.config सेटिंग्स यहाँ में बदलाव पर एक सभ्य चर्चा है Using different Web.config in development and production environment
नोट: आप एक अलग सवाल पूछ रहे हैं, लेकिन मैं सुझाव देता हूं कि वैसे भी इसे देखें क्योंकि यह लाइव और डीबग सेटिंग्स के बीच स्विच करने के सुझावों का एक अद्भुत संग्रह है और सभी उत्तरों (आईएमओ) के पास कुछ मूल्य है - नहीं सिर्फ उच्चतम मतदान/स्वीकृत उत्तर।
निजी तौर पर, मैं एक विधि यहाँ समझाया और लगता है कि यह सबसे लचीला है और के रूप में यह फ़ाइल आधारित है विन्यास बदलाव के सभी प्रकार के लिए लागू है, लेकिन उन्हें समाधान विन्यास के आधार पर स्वत: बदली होने की अनुमति देता का उपयोग करें:
http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx
अनिवार्य रूप से, आप समाधान विन्यास फ़ाइल नाम के साथ जोड़ दिया नाम के साथ डिस्क पर एक दूसरे के साथ वेब config बाहर स्वैप करने के लिए एक पूर्व निर्माण घटना चलाते हैं। उदाहरण के लिए, मेरे पास web.config.release, web.config.debug और यहां तक कि एक web.config.neilathome है।
मैं आंशिक कक्षाएं बनाकर कोड की सशर्त बिट्स के लिए सटीक वही विधियों का उपयोग करता हूं और अपनी स्वयं की फ़ाइलों में मेरे समाधान कॉन्फ़िगरेशन के बीच बदलती सामग्री डालता हूं। उदाहरण के लिए, मेरे पास sync_timersettings.cs है जो आंशिक कक्षा है जिसमें कुछ स्थिरांक हैं जो परिभाषित करते हैं कि मेरा अपडेट कोड कितनी बार वेब-सेवा कॉल करता है। या आप बस अपनी सभी सेटिंग्स को app.settings फ़ाइल में डाल सकते हैं और इसे इस तरह से कर सकते हैं।
मुझे यह एक बहुत ही लचीला समाधान मिल गया है, यह मुझे जावास्क्रिप्ट और सीएसएस के हिस्सों को स्वैप करने देता है और जब तक आप अपनी फाइलों में कॉन्फ़िगरेशन के बीच बदलती चीजों को रखने के लिए समय लेते हैं, तो आप संभवत: उस राज्य में जा सकते हैं आप डीबग समाधान कॉन्फ़िगरेशन में डिबगिंग कर सकते हैं और फिर एक क्लिक में रिलीज और तैनाती पर स्विच कर सकते हैं।
आगे ध्यान दें: टिप्पणी करने के लिए
#if DEBUG
pnlDebugIncludes.visible = true
#else
pnlReleaseIncludes.visible = true
#endif
जवाब:
यह केवल उपयोगी है यदि आप एक डिबग समाधान विन्यास और एक दूसरे जो अपनी लाइव तैनाती है है। यह तब काम नहीं करेगा जब आप (मेरे जैसे) एक स्टेजिंग, रिलीज और नेइलोनिस्प्लेप्ट समाधान कॉन्फ़िगरेशन करते हैं क्योंकि DEBUG प्रतीक केवल तभी सेट होता है जब आपके पास डिबगिंग सक्षम हो। कार्य-आसपास अपने वेब एप्लिकेशन के गुण पृष्ठ पर जाना है और बिल्ड टैब में, अपनी प्रत्येक बिल्ड कॉन्फ़िगरेशन के लिए एक सशर्त प्रतीक डालें। आईई, सेट करने के लिए कॉन्फ़िगरेशन बनाने और उस टैब में सशर्त प्रतीक बॉक्स में 'रिलीज़' डालने के लिए सेट करें। फिर विभिन्न बिल्ड कॉन्फ़िगरेशन के लिए ऐसा ही करें, वहां सशर्त प्रतीक बॉक्स स्वचालित रूप से आपके निर्माण कॉन्फ़िगरेशन के आधार पर बदल जाएगा। #if सशर्त संकलन निर्देश तब अपेक्षित काम करेंगे।
बायर्ड ने कॉन्फ़िगरेशन के बीच मार्क-अप बदलने के लिए इसका उपयोग करने के तरीके के बारे में अधिक जानकारी के लिए कहा। ठीक है आप पूरे .aspx पृष्ठ को स्वैप करने के लिए उपयोग कर सकते हैं - home.aspx.release और home.aspx.debug है लेकिन इसका मतलब यह होगा कि आपको प्रत्येक फ़ाइल में बहुत सारे मार्क-अप को दोहराना होगा। मेरा समाधान मेरे आवेदन में आंशिक वर्ग जोड़ना है। उदाहरण के लिए, मेरे 'ViewImage' पृष्ठ उस में निम्नलिखित वर्ग परिभाषा है:
public partial class ViewImage : System.Web.UI.Page
..so मैं एक ही हस्ताक्षर के साथ कुछ वर्ग फ़ाइलों बनाया है और उन्हें 'ViewImage_titleset.cs.debug' और 'ViewImage_titleset.cs नामित .staging ':
namespace Website
{
public partial class ViewImage : System.Web.UI.Page
{
public void SetTitle()
{
Page.Title = "Running in debug mode";
}
}
}
और
namespace Website
{
public partial class ViewImage : System.Web.UI.Page
{
public void SetTitle()
{
Page.Title = "Running in staging mode";
}
}
}
ViewImage के लिए पृष्ठ लोड घटना में setTitle ..calling जो निर्माण विन्यास स्थान पर था पर निर्भर करता है शीर्षक बदल जाएगा। यह केवल तभी काम करेगा यदि आप प्रोग्राम को प्रोग्रामेटिक रूप से बदल रहे हैं।
इस तरह के कोड को बदलने के लिए उपरोक्त सशर्त संकलन विधि का उपयोग करना बेहतर है और गैर-कोड फ़ाइलों जैसे छवियों या web.configs को बदलने के लिए फ़ाइल-स्वैप विधि को आरक्षित करना बेहतर है। बस सुनिश्चित करें कि आप प्रकाशित करने के लिए वैकल्पिक फ़ाइलों को तैनात नहीं करते हैं।
वाईयूआई संपीड़न का नेट पोर्ट - धन्यवाद, मैं अपनी जेएस फाइलों को संयोजित करने के लिए ऐसा कुछ ढूंढ रहा हूं। –
ओएमजी - मुझे वह आदमी पता है जिसने यूयूआई के .NET पोर्ट को किया था। छोटी दुनिया, आदि .. –