क्या यह समर्थित है?
यदि हां, तो क्या इसे सक्षम करने के लिए कुछ चाल है? मुझे लगता है कि रेज़र एक नए पर्याप्त संकलक का उपयोग नहीं कर रहा है ...? VS2015 आईडीई इसके साथ ठीक लगता है, लेकिन रनटाइम पर मुझे मिल रहा है
CS1056: अप्रत्याशित चरित्र '$'
क्या यह समर्थित है?
यदि हां, तो क्या इसे सक्षम करने के लिए कुछ चाल है? मुझे लगता है कि रेज़र एक नए पर्याप्त संकलक का उपयोग नहीं कर रहा है ...? VS2015 आईडीई इसके साथ ठीक लगता है, लेकिन रनटाइम पर मुझे मिल रहा है
CS1056: अप्रत्याशित चरित्र '$'
जवाबों:
अपडेट :
विजुअल स्टूडियो 2015 अपडेट 1 में शुरू, आपके लिए नीचे दिए गए चरणों को करने के लिए जीयूआई में एक सरल प्रक्रिया है। बस अपनी वेब परियोजना पर राइट-क्लिक करें और "C # 6 / VB 14 सक्षम करें" चुनें। MSDN ब्लॉग पोस्ट पर अधिक जानकारी उपलब्ध है, " C # 6 / VB 14 को सक्षम करने के लिए नई सुविधा "।
चूंकि यह उत्तर लिखा गया था, इस कार्यक्षमता को एक NuGet पैकेज की सहायता से जोड़ा गया है।
यदि आप MVC5 का उपयोग कर रहे हैं तो अपने समाधान में इस Nuget पैकेज को जोड़ें।
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
नगेट पैकेज को आपके web.config को संशोधित करना चाहिए, लेकिन जांच लें कि निम्न कॉन्फ़िगरेशन आपकी web.config फ़ाइल में है (और यदि यह इसे नहीं जोड़ रहा है):
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
MVC6 में, यह अंतर्निहित है।
मूल उत्तर:
<div>
@($"Hello {this.Model.SomeProperty}")
</div>
यह केवल MVC6 के साथ C # 6 में काम करता है। यहां तक कि अगर आप C # 6 संकलक के साथ MVC5 चला रहे हैं, तो यह काम नहीं करेगा।
चाल यह है कि रेजर पार्सर अभी तक कुछ वाक्यविन्यासों को पहचानने के लिए पर्याप्त स्मार्ट नहीं है, इसलिए आपको कोष्ठक में पूरी बात को लपेटना होगा ( ?.
अपने रेजर विचारों में अशक्त-संचालक ऑपरेटर का उपयोग करते समय आपको ऐसा करना चाहिए )।
उस ने कहा, रेजर में स्ट्रिंग इंटरप्टेशन MVC6 में इस समय थोड़ा छोटा है, इसलिए मुझे आश्चर्य नहीं होगा अगर इसके साथ कुछ मुद्दे थे। उन्हें संबोधित किया जाएगा या नहीं यह एक और मामला है।
अपने प्रोजेक्ट में आवश्यक प्रदाता जोड़ने के लिए पैकेज मैनेजर कंसोल में निम्न कमांड चलाएँCodeDom
। यह आवश्यक सेटिंग्स web.config
जोड़ने के लिए स्वचालित रूप से आपकी फ़ाइल को संशोधित करेगा CodeDom
।
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
पुनः आरंभ करें Visual Studio
नोट: जैसा कि @ जेक ने इस उत्तर के तहत अपनी टिप्पणी में उल्लेख किया है, यदि आपके पास DotNetCompilerPlatform
पहले से ही पैकेज है तो इसे अद्यतन करने की आवश्यकता हो सकती है।
Replacement CodeDOM providers that use the new .NET Compiler Platform ("Roslyn") compiler as a service APIs. This provides support for new language features in systems using CodeDOM (e.g. ASP.NET runtime compilation) as well as improving the compilation performance of these systems.