एक उस्तरा दृश्य में स्ट्रिंग प्रक्षेप?


93

क्या यह समर्थित है?

यदि हां, तो क्या इसे सक्षम करने के लिए कुछ चाल है? मुझे लगता है कि रेज़र एक नए पर्याप्त संकलक का उपयोग नहीं कर रहा है ...? VS2015 आईडीई इसके साथ ठीक लगता है, लेकिन रनटाइम पर मुझे मिल रहा है

CS1056: अप्रत्याशित चरित्र '$'


क्या आप उस कोड को दिखा सकते हैं जिसके बारे में आप बात कर रहे हैं?
जीरो वेनवेल

आप कौन सा ASP.NET उपयोग कर रहे हैं (ASP.NET 5: नया .NET .NET पर बनाया गया है? या ASP.NET 4 को अपडेट)?
रिचर्ड

6
यह टॉपिक कैसे है?!?!?! हास्यास्पद।
जोश एम।

1
धन्यवाद! मुझे खुशी है कि किसी और ने ऐसा कहा। मुझे लगा कि यह काफी मददगार है और मैं व्यक्तिगत रूप से 2 लोगों को जानता हूं जिनके पास एक ही समाधान के साथ एक ही समस्या थी। वैसे भी यहाँ पर प्रभारी कौन है ??
टिम श्मिट

@TimSchmidt करीबी कतार लंबी है, इसलिए कभी-कभी प्रश्न अनुचित रूप से बंद हो जाते हैं। लेकिन फिर से खोलने की कतार छोटी है, इसलिए अगर इसे फिर से खोलना चाहिए, तो यह जल्दी से ठीक हो जाएगा।
o11c

जवाबों:


124

अपडेट :

विजुअल स्टूडियो 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=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

MVC6 में, यह अंतर्निहित है।


मूल उत्तर:

<div>
    @($"Hello {this.Model.SomeProperty}")
</div>

यह केवल MVC6 के साथ C # 6 में काम करता है। यहां तक ​​कि अगर आप C # 6 संकलक के साथ MVC5 चला रहे हैं, तो यह काम नहीं करेगा।

चाल यह है कि रेजर पार्सर अभी तक कुछ वाक्यविन्यासों को पहचानने के लिए पर्याप्त स्मार्ट नहीं है, इसलिए आपको कोष्ठक में पूरी बात को लपेटना होगा ( ?.अपने रेजर विचारों में अशक्त-संचालक ऑपरेटर का उपयोग करते समय आपको ऐसा करना चाहिए )।

उस ने कहा, रेजर में स्ट्रिंग इंटरप्टेशन MVC6 में इस समय थोड़ा छोटा है, इसलिए मुझे आश्चर्य नहीं होगा अगर इसके साथ कुछ मुद्दे थे। उन्हें संबोधित किया जाएगा या नहीं यह एक और मामला है।


आह, बिंगो, मैं MVC 5 का उपयोग कर रहा था। धन्यवाद!
टिम श्मिट

5
MVC 5.2.3 काम करता है, आपको बस asp.net के लिए rosyln कोड डोम पैकेज जोड़ना होगा। इस उत्तर को गैर-बंद प्रश्न में देखें: stackoverflow.com/a/31548221/637783
jbtule

1
वैसे बनाम त्रुटि को अपडेट किया और अब मैं कहता हूं कि c # 6 समर्थित नहीं है, जो बेहतर है
CMS

1
इस NuGet पैकेज को स्थापित करने के बाद भी जिसने Web.Config को भी अपडेट किया है, मुझे अभी भी टूल टिप के रूप में निम्न त्रुटि संदेश मिल रहा है: "फ़ीचर 'null प्रोपगेटिंग ऑपरेटर' C # 5 में उपलब्ध नहीं है। कृपया भाषा संस्करण 6 या अधिक का उपयोग करें।"
सुपर कोडर

1
मेरे पास राइट-क्लिक मेनू पर "Enable C # 6 / VB 14" विकल्प नहीं था। लेकिन मेरे पास यह विज़ुअल स्टूडियो, प्रोजेक्ट मेनू में था, इसलिए मैंने इसे वहां से सक्षम किया है। धन्यवाद।
हसनग

14
  1. अपने प्रोजेक्ट में आवश्यक प्रदाता जोड़ने के लिए पैकेज मैनेजर कंसोल में निम्न कमांड चलाएँCodeDom । यह आवश्यक सेटिंग्स web.configजोड़ने के लिए स्वचालित रूप से आपकी फ़ाइल को संशोधित करेगा CodeDom

    Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

  2. पुनः आरंभ करें 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.
लुइस फेरो

1
मेरे परिदृश्य के लिए, मेरे पास यह पैकेज पहले से था, लेकिन यह संस्करण 1.0.5 था। 1.0.8 में अद्यतन करने से समस्या हल हो गई।
जेक

विज़ुअल स्टूडियो को पुनरारंभ करना मेरे लिए आवश्यक नहीं था।
जॉनाथन बार्कले

@JohnathanBarclay मेरे मामले में पुनरारंभ आवश्यक था। मुझे लगता है कि यह मानना ​​सुरक्षित है कि कुछ लोगों के लिए यह आवश्यक होगा।
लाउडेनवियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.