রেজার ভিউগুলিতে নতুন সি # 8.0 বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করবেন


14

ভিজুয়াল স্টুডিও 2019 এর মাধ্যমে নতুন সি # 8.0 বৈশিষ্ট্যগুলি ব্যবহার করতে আমি আমার এএসপি.নেট এমভিসি 5 ওয়েব অ্যাপ্লিকেশন আপডেট করেছি এবং আমি রেজার ভিউয়ের মধ্যে এই নতুন বৈশিষ্ট্যগুলি ব্যবহার করার চেষ্টা না করা পর্যন্ত সবকিছু ঠিকঠাক কাজ করে।

উদাহরণস্বরূপ, যদি আমি নতুন স্যুইচ এক্সপ্রেশনটি ব্যবহার করার চেষ্টা করি:

@{
    ViewBag.Title = "About";

    var foo = 1;
    var bar = foo switch
    {
        1 => "one",
        2 => "two",
        _ => string.Empty
    };
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>

<p>Use this area to provide additional information.</p>

আমাকে সংকলনের ত্রুটি দিয়ে পাতায় পৌঁছানোর চেষ্টা না করা পর্যন্ত সংকলক অভিযোগ করবে না।

সংকলন ত্রুটি

আমার সন্দেহ হয় যে Microsoft.CodeDom.Providers.DotNetCompilerPlatformএটি আপডেট হতে হবে তবে মনে হয় কোনও আপডেট উপলব্ধ নেই।

রেজার ভিউগুলিতে সি # 8.0 ভাষার বৈশিষ্ট্যগুলি ব্যবহার করার কোনও উপায় আছে কি?



ঠিক আছে, আমি এটি ঠিক সেখানে পেয়েছি যে এটি সম্ভবত Microsoft.CodeDom.Providers.DotNetCompilerPlatformপ্যাকেজের সাথে সম্পর্কিত তবে আমি এটি কোনওভাবেই # 8.0 এর জন্য কাজ করতে পারি না
dbraillon

আমার জন্য কাজ, - আমি # 2.0.1 সংস্করণে Microsoft.CodeDom.Providers.DotNetCompilerPlatform আপডেট রেফারেন্স (install-প্যাকেজ Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Version 2.0.1)
YoB

আমি কেবলমাত্র নতুন সমাধানের সাথে আরেকবার চেষ্টা করেছি: নেট ফ্রেমওয়ার্কের সাহায্যে ডিফল্ট এমভিসি টেম্পলেট দিয়ে একটি নতুন সমাধান তৈরি করুন, কিছু সি # 8.0 কোড লিখুন, ভিজ্যুয়াল স্টুডিও জিজ্ঞাসা করুন আমি সি # 8.0 ব্যবহার করার জন্য আমার প্রকল্পটি আপডেট করতে চাই কিনা, এটি গ্রহণ করুন তবে এটি লিখুন খুব একটি ভিউ একই কোড। এটি সংকলন করে তবে রানটাইমে কার্যকর করা হবে না ...
dbraillon

এই ইস্যুতে কোন ভাগ্য?
eaglei22

উত্তর:


6

.NET ফ্রেমওয়ার্ক সি # 7.3 কে সমর্থন করে তাই আপনি নিজের রেজার ভিউটিকে কাজ করতে পারবেন না

। নেট কোর 3 সি # 8 সমর্থন করে এবং আমি আপনার নেটটেলটি একটি নেট নেট 3 এমভিসি অ্যাপ্লিকেশন দিয়ে কাজ করতে সক্ষম হয়েছি।

আপনি এখানে একবার দেখতে পারেন: https://docs.microsoft.com/en-us/dotnet/csharp/language-references/configure-language-version

আমি আশা করি উপরেরটি সাহায্য করে :)


আপনি যা বলছেন তা সত্য। আমি আছি কেবল পরিবর্তন করে আমার .net 4.7.2 প্রকল্পে সি # 8.0 বৈশিষ্ট্য ব্যবহার করতে পারবেন LangVersionআমার csproj হবে। আমি এমনকি naclable বৈশিষ্ট্য ব্যবহার করতে পারেন। এবং ওপি দ্বারা প্রস্তাবিত কোডটি সংকলন করে ঠিক জরিমানা করে। সুতরাং এটি আকর্ষণীয় কেন এটি এএসপি.এনইটি অ্যাপ্লিকেশনটির জন্য কাজ করবে না।
থমাস হাইজিটিংক

@ থমাস হাইজিটিংক, মাইক্রোসফ্টের জন্য শেষ আপডেট দেখুন । সুতরাং, এখন সি # 8 বৈশিষ্ট্যগুলি বান্ডিলযুক্ত সংকলক সহ সমর্থিত নয়।
HAL

1
@ থমাস হাইজিটঙ্ক, আপনি ভান্ডারগুলিতে অবদান রাখতে পারেন । আমি বিশ্বাস করি আপনি শুধু শেষ সংস্করণ ব্যবহার করতে হবে Microsoft.Net.Compilers মধ্যে RoslynCodeProvider.settings.targets : <MSNetCompilersNuGetPackageLatestVersion>3.3.1</MSNetCompilersNuGetPackageLatestVersion>। আপনি উত্স থেকে আপনার নিজস্ব ন্যুগেট প্যাকেজ তৈরি করতে এবং এটি ব্যবহার করতে পারেন (বা পিআর তৈরি করুন এবং এটি মাস্টারে মার্জ হওয়ার আশা নিয়ে প্রতিক্রিয়া পেতে পারেন)।
HAL

কেউ কি কাঁটাচামচ চেষ্টা করেছেন? আমি গিটহাবের মধ্যে একটি দেখতে পাচ্ছি না (এটি এই পরিবর্তনটি যুক্ত করে)। আমার লক্ষ্য হ'ল ধীরে ধীরে একটি এএসপি.এনইটি ক্লাসিক প্রকল্পকে মূল দিকে স্থানান্তরিত করা এবং code.x প্রকারের কিছু কোড আটকে দেওয়া এটিকে ব্যথা করে।
সেরেন কুকলাউ

2

ঠিক আছে তাই, কিছু জিনিস রয়েছে যা প্রথমে পরিষ্কার করা দরকার।

এই উত্তর অনুসারে সি # ভাষার সংস্করণ কাঠামোর সাথে আবদ্ধ এবং সি # 8.0 সমস্ত ভাষাতে সমর্থন করে যে সমর্থন করে। নেট স্ট্যান্ডার্ড 2.1। .NET ফ্রেমওয়ার্ক 4.7.2 এবং নীচে। নেট স্ট্যান্ডার্ড 2.1 সমর্থন করে না এবং ভবিষ্যতে এটি হবে না it

এরই মধ্যে সি # 8.0 ব্যবহারের একটি উপায় রয়েছে আপনি যদি কোনও .csproj প্রকল্পের ফাইলে ল্যাংভেরিশন নির্দিষ্ট করে থাকেন:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net48</TargetFrameworks>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

এটি সি # 8.0 সক্ষম করবে এবং কিছু অ-বাঁধা ফ্রেমওয়ার্ক বৈশিষ্ট্য আপনার জন্য উপলভ্য হবে। কোনটি জানতে লিঙ্কের উত্তরটি চেক করুন।

অবশেষে আমার নিজের প্রশ্নের উত্তর দেওয়ার জন্য, এই মুহুর্তে, না, রেজার ভিউয়ের ভিতরে সি # 8.0 বৈশিষ্ট্যগুলির কোনও ব্যবহার করার উপায় নেই। রান-টাইম সংকলনটি এমন একটি প্যাকেজ নামের সাথে সম্পন্ন হয়েছে বলে মনে হয় Microsoft.CodeDom.Providers.DotNetCompilerPlatformযাতে নতুন কিছু বৈশিষ্ট্য ব্যবহারের অনুমতি দেওয়ার জন্য সেই প্যাকেজটি আপডেট করা একমাত্র উপায়।

আমি আরও তথ্য পাওয়ার সাথে সাথে উত্তরটি আপডেট করব।

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