परिचय: bin फ़ोल्डर का परिचित अजनबी
\n\nआप अपना C# प्रोजेक्ट चला रहे हैं, कॉफ़ी पी रहे हैं, एक और सफल डिप्लॉय की उम्मीद कर रहे हैं, और अचानक — बम! — लॉग या ब्राउज़र में एक डरावना लाल संदेश दिखाई देता है: Could not find a part of the path '...\\bin\\roslyn\\csc.exe'। परिचित लगता है? यदि आपने कभी csc.exe त्रुटि का सामना किया है, तो आप जानते हैं: यह सिर्फ "कुछ टूट गया" नहीं है, बल्कि एक पूरी कहानी है कि कैसे .NET आपके कोड को तुरंत संकलित करता है।
वास्तव में, इस त्रुटि के पीछे कोई बुरी किस्मत नहीं, बल्कि सामान्य तकनीकी बारीकियाँ हैं। आइए समझते हैं कि bin\\roslyn\\csc.exe अचानक क्यों "गायब" हो जाता है और इससे हमेशा के लिए कैसे निपटें। यह लेख उन शुरुआती लोगों के लिए उपयोगी होगा जो पहली बार ASP.NET में यह त्रुटि देख रहे हैं, और अनुभवी डेवलपर्स के लिए भी जो इसे मैन्युअल रूप से ठीक करते-करते थक गए हैं।
\n\nयह रहस्यमयी csc.exe क्या है और इसकी आवश्यकता क्यों है?
\n\nलड़ाई में कूदने से पहले, आइए सिद्धांत को समझें। Csc.exe .NET Framework का C# कंपाइलर है। पहले यह सिस्टम की गहराई में कहीं रहता था, लेकिन Roslyn (Microsoft का ओपन-सोर्स कंपाइलर प्लेटफ़ॉर्म) के आने के बाद सब कुछ बदल गया। अब ASP.NET प्रोजेक्ट्स (विशेषकर पुराने, .NET Framework पर) में Microsoft.CodeDom.Providers.DotNetCompilerPlatform पैकेज का उपयोग किया जाता है। यह कंपाइलर के नए संस्करणों को सीधे आपके प्रोजेक्ट फ़ोल्डर में कॉपी करता है — bin\\roslyn\\csc.exe में।
क्यों? ताकि वेबसाइट सर्वर पर ही C# कोड संकलित कर सके (उदाहरण के लिए, डायनामिक Razor व्यू के लिए)। यदि यह फ़ाइल गायब, दूषित या कॉपी नहीं हुई है — तो आपको वही csc.exe पथ त्रुटि मिलती है।
\n\nत्रुटि के शीर्ष 5 कारण और उन्हें कैसे ठीक करें
\n\n1. bin और obj फ़ोल्डरों में "कचरा" (सबसे सामान्य कारण)
\n\nसबसे लोकप्रिय परिदृश्य: आपने पैकेज अपडेट किए, .NET संस्करण बदला, या प्रोजेक्ट पुराने बिल्ड से "भर गया"। bin और obj फ़ोल्डर संकलन कैश संग्रहीत करते हैं, और यदि उनमें Roslyn के पुराने संस्करणों की टूटी हुई लिंक रह गई हैं — तो त्रुटि आएगी।
समाधान: प्रोजेक्ट को पूरी तरह से साफ़ करें।
\n\n// Visual Studio बंद करें\n// पूरे समाधान में मैन्युअल रूप से bin और obj फ़ोल्डर हटाएँ\n// या पैकेज मैनेजर कंसोल का उपयोग करें:\nUpdate-Package –reinstall Microsoft.CodeDom.Providers.DotNetCompilerPlatform\n\n\nइसके बाद प्रोजेक्ट को पुनः बनाएँ (Build → Rebuild Solution)। सिस्टम NuGet पैकेज से csc.exe को आवश्यक फ़ोल्डर में फिर से कॉपी करेगा।
\n\n2. NuGet पैकेज संस्करणों का विरोध
\n\nकभी-कभी आप गलती से Microsoft.CodeDom.Providers.DotNetCompilerPlatform को ऐसे संस्करण में अपडेट कर देते हैं जो आपके प्रोजेक्ट के साथ असंगत है। या, इसके विपरीत, पुराना पैकेज नया Roslyn नहीं ढूँढ पाता।
\n\nसमाधान: पैकेज को जबरदस्ती पुनः स्थापित करें।
\n\n// पैकेज मैनेजर कंसोल में (Tools → NuGet Package Manager → Package Manager Console)\nUninstall-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Force\nInstall-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform\n\n\nध्यान दें: यदि आपका प्रोजेक्ट .NET Framework 4.7.2 या उससे नीचे का उपयोग करता है, तो पैकेज संस्करण 2.0.1 स्थापित करना बेहतर है (नए संस्करणों को .NET 4.8+ की आवश्यकता हो सकती है)।
3. गलत web.config या मैन्युअल संपादन
\n\nweb.config फ़ाइल में एक सेक्शन <system.codedom> है, जो बताता है कि किस कंपाइलर का उपयोग करना है। यदि आपने (या किसी प्लगइन ने) गलती से इस सेक्शन को हटा या बदल दिया है — तो bin\\roslyn\\csc.exe कनेक्ट होना बंद कर देगा।
समाधान: web.config जाँचें। सही कॉन्फ़िगरेशन इस प्रकार दिखता है:
\n\n<system.codedom>\n <compilers>\n <compiler language="c#;cs;csharp" extension=".cs"\n type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Vers