একটি রেজার ভিউতে স্ট্রিং ইন্টারপোলেশন?


93

এটি কি সমর্থিত?

যদি তাই হয়, এটি সক্ষম করার কিছু কৌশল আছে? আমি ধরে নিচ্ছি রেজার একটি নতুন পর্যাপ্ত সংকলক ব্যবহার করছে না ...? ভিএস ২০১৫ আইডিটি এটির সাথে ঠিক আছে বলে মনে হচ্ছে তবে রানটাইমে আমি পাচ্ছি

CS1056: অপ্রত্যাশিত চরিত্র '$'


আপনি যে কোডটির কথা বলছেন তা কি আপনি প্রদর্শন করতে পারেন?
জেরোইন ভেনেভেল

আপনি কোন এএসপি.এনইটি ব্যবহার করছেন (এএসপি.এনইটি 5:। নেট কোর উপর নির্মিত নতুনটি; বা এএসপি.নেট 4-এ আপডেট)?
রিচার্ড

4
ধন্যবাদ! আমি খুশি যে অন্য কেউ এটা বলেছেন। আমি ভেবেছিলাম এটি বেশ সহায়ক এবং আমি ব্যক্তিগতভাবে 2 জন লোককে জানি যাঁদের একই সমাধানে একই সমস্যা ছিল। হেক যাহাই হউক না কেন এখানে দায়িত্বে আছেন ??
টিম শ্মিট

@ টিমশ্মমিট নিবিড় সারি দীর্ঘ, তাই কখনও কখনও প্রশ্নগুলি অনুপযুক্তভাবে বন্ধ হয়ে যায়। তবে পুনরায় খোলা সারিটি সংক্ষিপ্ত, সুতরাং যদি এটি সত্যিই আবার খোলা উচিত তবে এটি মোটামুটি দ্রুত হবে।
o11c

উত্তর:


125

আপডেট :

ভিজ্যুয়াল স্টুডিও 2015 আপডেট 1 থেকে শুরু করে, জিইউআইতে আপনার জন্য নীচের পদক্ষেপগুলি করার জন্য একটি সহজ প্রক্রিয়া রয়েছে। আপনার ওয়েব প্রকল্পকে কেবল ডান-ক্লিক করুন এবং "সি # 6 / ভিবি 14 সক্ষম করুন" নির্বাচন করুন। এমএসডিএন ব্লগ পোস্টে আরও তথ্য পাওয়া যায়, " সি # 6 / ভিবি 14 সক্ষম করার জন্য নতুন বৈশিষ্ট্য "।

যেহেতু এই উত্তরটি লেখা হয়েছিল, নুগেট প্যাকেজের সহায়তায় এই কার্যকারিতা যুক্ত করা হয়েছে।

আপনি যদি এমভিসি 5 ব্যবহার করেন তবে আপনার সমাধানটিতে এই নুগেট প্যাকেজটি যুক্ত করুন।

https://www.nuget.org/packages/ মাইক্রোসফট.কোডডম.প্রভাইডার্স.ডট নেট কম্পিউটার

নুগেট প্যাকেজটি আপনার ওয়েব কোডফাইগটি পরিবর্তন করতে হবে, তবে নীচের কনফিগারেশনটি আপনার ওয়েবকনফাইগ ফাইলে রয়েছে কিনা তা পরীক্ষা করুন (এবং যদি এটি এতে যোগ না করে):

  <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>

এমভিসি 6 এ এটি অন্তর্নির্মিত।


আসল উত্তর:

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

এটি কেবল এমভিসি 6 এর সাথে সি # 6 এ কাজ করে। এমনকি আপনি যদি সি # 6 সংকলক সহ এমভিসি 5 চালাচ্ছেন তবে এটি কার্যকর হবে না।

কৌশলটি হ'ল রেজার পার্সারটি এখনও কিছু বাক্য গঠন সনাক্ত করতে যথেষ্ট স্মার্ট নয়, সুতরাং আপনাকে অবশ্যই পুরো জিনিসটি বন্ধনীতে আবৃত করতে হবে ( ?.আপনার রেজারের ভিউগুলিতে নাল-কন্ডিশনাল অপারেটর ব্যবহার করার সময়ও আপনাকে এটি করতে হবে )।

এটি বলেছিল যে রেজারে স্ট্রিং ইন্টারপোলেশন এমভিসি 6-তে এই মুহুর্তে কিছুটা বগি , সুতরাং এর সাথে কিছু সমস্যা থাকলে আমি অবাক হব না। তাদের সম্বোধন করা হবে কি না তা অন্য বিষয়।


আহ, বিঙ্গো, আমি এমভিসি ব্যবহার করছিলাম 5 ধন্যবাদ!
টিম শ্মিড্ট

5
এমভিসি 5.2.3 কাজ করে, আপনাকে কেবল এসপ নেটওয়ারের জন্য রোসেলন কোড ডোম প্যাকেজ যুক্ত করতে হবে। : একটি অ বদ্ধ প্রশ্নে এই উত্তরটি দেখুন stackoverflow.com/a/31548221/637783
jbtule

4
উপায় দ্বারা বনাম ত্রুটি আপডেট করেছে এবং এখন আমি বলেছি যে সি # 6 সমর্থিত নয়, যা আরও ভাল
সিএমএস

4
এই নিউগেট প্যাকেজটি ইনস্টল করার পরেও যা ওয়েবকেও আপডেট করেছে on
সুপার কোডার

4
ডান-ক্লিক মেনুতে আমার "সক্ষম সি # 6 / ভিবি 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.
লুইস ফেরারাও

4
আমার দৃশ্যের জন্য, আমার এই প্যাকেজটি ইতিমধ্যে ছিল, তবে এটি সংস্করণ 1.0.5 ছিল। 1.0.8 এ আপডেট করা সমস্যার সমাধান করেছে।
জেক

ভিজ্যুয়াল স্টুডিওটি পুনরায় চালু করা আমার পক্ষে প্রয়োজনীয় ছিল না।
জননাথন বার্কলে

@ জোনাথনব্রাকেলে আমার ক্ষেত্রে পুনরায় চালু করা দরকার ছিল। আমি মনে করি এটি নিরাপদ যে এটি কিছু লোকের জন্য প্রয়োজনীয় হবে ass
লাউডেনভিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.