ওয়েব সাইট প্রকল্পের ধরণের সাথে সি # 6 কীভাবে ব্যবহার করবেন?


126

একটি বিদ্যমান ওয়েব সাইট প্রকল্পের প্রকার ভিজ্যুয়াল স্টুডিও 2015 আপডেট করেছে , আমি ফ্রেমওয়ার্কটি 4.6 এ পরিবর্তন করেছি।

আমি তখন প্রত্যাশা করেছি যে ফাইলগুলির পিছনে আমার কোডটিতে এই সমস্ত নতুন বৈশিষ্ট্য উপলব্ধ রয়েছে।

দুর্ভাগ্যক্রমে আমি ত্রুটিগুলি পেয়ে যাচ্ছি:

ত্রুটি CS8026: বৈশিষ্ট্য 'এক্সপ্রেশন-দেহযুক্ত সম্পত্তি' সি # 5 তে উপলব্ধ নয় দয়া করে ভাষা সংস্করণ 6 বা তার বেশি ব্যবহার করুন use

বা যেমন:

ত্রুটি CS8026: বৈশিষ্ট্য 'ইন্টারপোল্টেড স্ট্রিংস' সি # 5 তে উপলভ্য নয় দয়া করে ভাষা সংস্করণ 6 বা তার বেশি ব্যবহার করুন।

আমি একটি দ্রুত গুগল চেক করেছি এবং স্কটগুতে একটি ব্লগ পোস্ট করার জন্য একটি লোককে কিছু মন্তব্য পোস্ট করতে পেলাম (পৃষ্ঠায় "8026" অনুসন্ধান করুন)।

যেহেতু আমি তার সমাধানটি বুঝতে পারি না, এবং আরও সমাধানটি আরও দৃশ্যমান হতে চাই, তাই আমি এই এস পোস্টিং তৈরি করেছি।

আমার প্রশ্ন:

সি # 6 বৈশিষ্ট্যগুলি সনাক্ত করতে আমার কাছে কীভাবে একটি ভিজ্যুয়াল স্টুডিও 2015 প্রকারের ওয়েব সাইট (যেমন ওয়েব অ্যাপ্লিকেশন নয় ) প্রজেক্ট থাকতে পারে?


1
আপনি মন্তব্যটিতে উল্লিখিত কনফিগার উপাদানগুলিকে যুক্ত করার চেষ্টা করেছেন?
স্কেয়েন

আমি এটি করতে চলেছি, তবে এটি আমার কাছে সত্যই অদ্ভুত লাগছে , তাই আমি আরও কিছু পরিষ্কার সমাধান আশা করছিলাম।
উওয়ে কেইম

5
অবশ্যই, অন্য বিকল্পটি সেই ওয়েবসাইটগুলি "প্রকল্পগুলি" ব্যবহার বন্ধ করা এবং তার পরিবর্তে ওয়েব অ্যাপ্লিকেশন প্রকল্পগুলি ব্যবহার করা।
জন স্যান্ডার্স

1
@ জনসন্ডার্স আমি এটি করতে পছন্দ করব। মাইগ্রেশন যেহেতু একটি ম্যানুয়াল কাজ, তাই আমি ভয় করি যে সময়টি নেবে এবং মাইগ্রেশন চলাকালীন সমস্ত ত্রুটিগুলি আমি পরিচয় করিয়ে দেব। এটি ছোট প্রকল্পগুলির জন্য কয়েকবার করেছে। সর্বদা একটি ঝামেলা ছিল ...
উয়ে কেইম

1
আপনি এটি বিবেচনা করেছেন খুশি। মন্তব্যটি বেশিরভাগই অন্য পাঠকদের জন্য ছিল যারা মনে করতে পারে যে কোনও "ওয়েব সাইট" প্রকল্প তারা যা চায় তা শোনাচ্ছে।
জন স্যান্ডার্স

উত্তর:


118

আমি ASP.NET MVC 5 (পরীক্ষিত 5.2.3) সঙ্গে এই পরীক্ষিত করেছি, এবং আপনার মাইলেজ অন্যান্য ওয়েব অবকাঠামো সঙ্গে পরিবর্তিত হতে পারে, কিন্তু আপনি শুধু যোগ করতে হবে Roslyn CodeDOM | নিউগেট প্যাকেজ

.NET কম্পাইলারের জন্য কোডডম সরবরাহকারী ...

সার্ভিস এপিআই হিসাবে নতুন। নেট সংকলক প্ল্যাটফর্ম ("রোজলিন") সংকলক ব্যবহার করে এমন প্রতিস্থাপন কোডডোম সরবরাহকারী কোডডোম (যেমন এএসপি.এনইটি রানটাইম সংকলন) ব্যবহার করার পাশাপাশি এই সিস্টেমগুলির সংকলন কার্যকারিতা উন্নত করার জন্য এটি সিস্টেমে নতুন ভাষার বৈশিষ্ট্যগুলির জন্য সমর্থন সরবরাহ করে।

PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/

নিউগেট প্যাকেজটির ডিএলএল ফাইল যুক্ত করা উচিত এবং নিম্নলিখিতগুলি আপনার ওয়েবকনফাইগে যুক্ত করা উচিত।

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

যদি এটি এখনও নিখোঁজ হয়। নিজেকে যুক্ত করার চেষ্টা করুন।


1
এটি প্রত্যাশার মতো কাজ করে। সি # 6 এখন উপলভ্য। ত্রুটিটি হ'ল যে আমার অ্যাপ_গ্লোবালআরসোর্সেস / রিসোর্স.স্রেসগুলি আর সংস্থানগুলিতে শক্তভাবে টাইপ করা অ্যাক্সেসের জন্য অটো-শ্রেণি তৈরি করে না।
উয়ে কেইম

1
একটি নোট হিসাবে, প্রকল্পের টার্গেটটি ৪.6 এ পরিবর্তন করার পরে আমি ত্রুটি ছাড়াই নির্মাণ করতে সক্ষম হয়েছি। যাইহোক, ইন্টেলিসেন্স থেকে দেখানো লাল স্কুইগ্লিগুলি সমাধান করার জন্য আমার এই প্যাকেজটি ইনস্টল করা দরকার।
ডগ মোরো

7
আমি এটি একটি ওয়েব ফর্মস ওয়েবসাইটে ব্যবহার করছি (কোনও প্রকল্পের ফাইল নেই)। দুঃখের বিষয়, ব্রাউজারে পৃষ্ঠাটির পুনরায় অনুরোধ করার সময় সাধারণ .aspx পরিবর্তনগুলি একটি বেদনাদায়ক ধীরে ধীরে পুনরায় সংকলনকে ট্রিগার করে। হয়ত রোজলিন কোনও ওয়েব অ্যাপ্লিকেশন (প্রজ ফাইল সহ) এর জন্য তাত্ত্বিকভাবে দ্রুত, তবে ওয়েবসাইটগুলির জন্য এটি অ্যাপ_কোড ফোল্ডারে সিসিএসের মাধ্যমে উল্লেখযোগ্যভাবে ধীর হয়ে গেছে বলে মনে হচ্ছে ... কেউ একই জিনিস দেখছেন কি?
স্টিফান অ্যাঙ্গেল

4
দ্রষ্টব্য, ওয়েবফর্মগুলি সি # 6 দিয়ে সংকলনের জন্য আপনাকে নুগেট প্যাকেজ Microsoft.CodeDom.Providers.DotNetCompilerPlatformএবং তার নির্ভরতা ইনস্টল করতে হবেMicrosoft.Net.Compilers

3
মনে রাখবেন যে আপনার সমাধানে যদি আপনার একাধিক ওয়েব সাইট থাকে - জিনিসগুলি কাজ করবে না, তবে পুনরুত্পাদন করার সবচেয়ে সহজ উপায় হ'ল খালি সমাধান তৈরি করা এবং এটিতে প্রকল্পগুলি যুক্ত করা শুরু করা, দ্বিতীয় ওয়েবসাইটের পরে - আপনি "csc.exe সন্ধান করতে পারবেন না" পেতে শুরু করবেন " ত্রুটি
ম্যাক

67

আরও দেখুন এই ব্লগ পোস্টের থেকে সৈয়দ ইব্রাহিম হাশিমি কিভাবে বনাম আইডিই মাধ্যমে এই কাজ করতে হবে।

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

হালনাগাদ.

ভিএস 2017 এবং 2019 এর এই বৈশিষ্ট্যটি বিল্ড -> এএসপি.এনইটি সংকলনে সরানো হয়েছে । এখানে চিত্র বর্ণনা লিখুন


2
আপনি জানেন কী এই আইটেমটি ভিজ্যুয়াল স্টুডিও 2019 তে রয়েছে?
রক্ষক এক

4
@ প্রটেক্টর ওয়ান বিল্ড -> এএসপি.এনইটি সংকলন
ভার্টিগো

1
আমি ভিএস ২০১৯-এ একটি পুরানো ফোল্ডার-ভিত্তিক ওয়েবসাইট প্রকল্প খুলেছি এবং এই বিকল্পটি প্রদর্শিত হওয়ার আগে ফাইল> প্রকল্পটি সংরক্ষণ করতে হয়েছিল।
করগালোর

15

আমি @ Jbtule এর পরামর্শ অনুসারে ডটনেটকম্পিলার প্ল্যাটফর্মটি ইনস্টল করেছি, তবে এখনও একই ত্রুটি পেয়েছি।

PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

আমি সলিউশনটি বন্ধ করে দিয়ে বিন এবং andজ ফোল্ডারগুলি মুছলাম, তারপরে সমাধানটি খুললাম এবং পুনর্নির্মাণ করব। এখন সি # 6 বৈশিষ্ট্যগুলি কাজ করে।


3
সবেমাত্র ভিএস বন্ধ এবং পুনরায় খোলা আমার পক্ষে (পরে Install-Package ...) কাজ করেছে । এছাড়াও লক্ষ্যমাত্রা 4.6।
রাওয়ালটার

1
এটি আমার পক্ষে কাজ করেছে, এছাড়াও রিশার্পার ব্যবহার করে আপনাকে মিথ্যা ত্রুটি দেখাতে পারে বলে নোটিশ পেয়েছে, কেন আমি সমস্ত দর্শনেই "প্রতীক সমাধান করতে অক্ষম" হয়েছি তা বুঝতে সময় লাগিয়েছিলাম ...
নিক্লাস

1
আমার ক্ষেত্রে সমাধানটি পুনরায় খোলার পরে আমাকে প্রায় 30 সেকেন্ড অপেক্ষা করতে হয়েছিল এবং এটি মুছে ফেলা binএবং ছাড়াই কাজ করে obj
২৩7777

12

স্কটগুর ব্লগ পোস্ট করার বিষয়ে মন্তব্যগুলি থেকে নেওয়া সম্ভাব্য সমাধান (পৃষ্ঠায় "8026" অনুসন্ধান করুন):

সমাধান প্রস্তাবনা 1 (ডেভিড টেলর)

এই আরটিএম কোড ডোম উপাদানগুলিকে ওয়েবকনফাইগে যুক্ত করুন:

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

তারপরে রোজলিন এবং মাইক্রোসফ্ট.কোডডম.প্রভাইডারগুলি যুক্ত করুন।

এটি সেটআপ করা যথেষ্ট সহজ, তবে আমার কাছে খুব আশ্চর্যের বিষয় ছিল যে আপনি যদি ভিএস 2015 আরটিএম-তে একটি নতুন "ওয়েব সাইট" তৈরি করার সময় নেট .6.6 নির্বাচন করেন তবে এটির জন্য ডিফল্ট টেম্পলেটটি সেট আপ করা হয়নি।

সমাধান প্রস্তাবনা 2 (মার্টিন)

উপরে ডেভিড টেলরের মন্তব্যে আরও মনে হচ্ছে, যখন কোনও ওয়েব অ্যাপ্লিকেশন ডিফল্ট ভি 4.5.5.2 হিসাবে টার্গেটফ্রেমওয়ার্ক দিয়ে তৈরি করা হয় তখন সিস্টেমে কোড কোডের সেটিংসটি সঠিক হয়। টার্গেটফ্রেমওয়ার্কটি v4.6 এ পরিবর্তন করা সিএসআরপের জন্য সংকলক সেটিংসকে এমনভাবে পরিবর্তন করতে পারে যা সমস্যার কারণ হয়ে থাকে।

আমার কাজের ক্ষেত্রগুলি নিম্নরূপ ছিল:

  1. ফাইল / নতুন / এএসপি.নেট ওয়েব অ্যাপ্লিকেশন
  2. ASP.NET 4.5.2 টেম্পলেট থেকে "ওয়েব এপিআই" টেম্পলেট নির্বাচন করুন
  3. সিস্টেমেড কোডম উপাদান (এবং এর বিষয়বস্তুগুলি) এর একটি অনুলিপি ওয়েবকনফাইগে নিন
  4. প্রোপার্টি / টার্গেটফ্রেমওয়ার্ক ব্যবহার করে লক্ষ্য ফ্রেমওয়ার্কটি 4.6 এ সেট করুন
  5. টার্গেটফ্রেমওয়ার্ক পরিবর্তন করার পূর্বে তোলা অনুলিপি দ্বারা ওয়েবকনফাইগের পরিবর্তিত সিস্টেম.কোডম উপাদানটি প্রতিস্থাপন করুন
  6. হিট F5

হোম পেজটি প্রত্যাশা অনুযায়ী লোড করা উচিত।

তথ্যের জন্য, টার্গেটফ্রেমওয়ার্কটি v4.6 এ পরিবর্তন করার সাথে সাথে সিস্টেম কোড কোডের সামগ্রীগুলি। নিম্নরূপ ছিল (নোট "মাইক্রোসফ্ট.সিএসআরপি.সিএসআরপি কোড কোডটি ব্যবহার করুন):

<system.codedom>
    <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
            <providerOption name="CompilerVersion" value="v4.0"/>
        </compiler>
        <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>

3
আপনার সমাধান 2 এর ক্ষেত্রে, Microsoft.CSharp.CSharpCodeProviderসংস্করণ 4.0 এর অর্থ এটি রোজিলেন ব্যবহার করছে না, এভাবে সি # 6.0 এর জন্য কাজ করবে না।
jbtule

1
যখন একটি পুরোনো সমাধান থেকে মাইগ্রেট, নিশ্চিত করুন <LangVersion>যে csprojফাইল সমান 6। এটি অন্য কিছু হলে এটি সমস্যার কারণ হতে পারে।
শৌল

7

এটি কোনও ওয়েব সাইট প্রকল্পের জন্য নয় । আপনি এএসপি.এনইটি এমভিসি প্রকল্পের জন্য এটি কীভাবে করেন।

আপনি ভিজুয়াল স্টুডিও ইউআইতে সি # 6 টগল করতে পারেন। এটি এমন একটি সহজ বিকল্প, এটি প্রথমে চেষ্টা করার মতো।

  1. আপনার প্রকল্পে ডান ক্লিক করুন এবং বৈশিষ্ট্য নির্বাচন করুন ।
  2. বিল্ড ট্যাবে ক্লিক করুন ।
  3. বিল্ড ট্যাবটির একেবারে নীচে একটি উন্নত ... বোতাম রয়েছে।
  4. এটি নীচে প্রদর্শিত হিসাবে উন্নত বিল্ড সেটিংস খুলবে । সি # 6.0 নির্বাচন করুন।

এখানে চিত্র বর্ণনা লিখুন


@ মানুজার আপনি ঠিক থাকতে পারেন এটি একটি এএসপি.এনইটি এমভিসি প্রকল্পের জন্য ছিল।
জেস

@ উকো কি ভুল? এটি কি এমভিসি প্রকল্প? আপনার কি বিল্ড সেটিংসে উন্নত বিকল্প রয়েছে? আপনি কি সি # ভাষার সংস্করণের জন্য বিকল্পগুলি হারিয়েছেন? আপনি কি সংস্করণটি সেট করেছেন এবং ভাষা বৈশিষ্ট্যগুলি ব্যবহার করতে সক্ষম নন?
জেস

@ জেস: আহ, সম্ভবত কাজ করছে। আমি লক্ষ্য করিনি যে আমার ত্রুটিটি ইন্টেলিজেন্স থেকে এসেছে বিল্ড থেকে নয়।
উকো

এই সেটিংটি এসপেক্স পৃষ্ঠাগুলিতে কোডের ক্ষেত্রে প্রযোজ্য বলে মনে হয় না, যেমন <% Eval(whatever) %>
ক্রিস

5

কোনও ওয়েবসাইট প্রকল্পের সাথে ভিএস ২০১7 এ এটির মতো দেখতে এখানে রয়েছে:

এখানে চিত্র বর্ণনা লিখুন


আমি @ ফসলের কাজের প্রশংসা করি তবে আমি মনে করি না যে এই নির্দিষ্ট মেনু আইটেমটি কোথায় থাকা উচিত সেজন্য প্রসঙ্গটি হারিয়ে গেছে বলে আমি শীর্ষস্থানীয় নাভির অপসারণের সাথে একমত হই।
b_levitt

1
সর্বশেষতম ভিএস 2017 এটিকে 'বিল্ড -> এএসপি.এনইটি সংকলন' এ স্থানান্তরিত করেছে। আমার আপডেট হওয়া উত্তরটি দেখুন।
ভার্টিগো

ওয়েব সাইট প্রকল্পের প্রকারের জন্য আমি VS2019 এ @ b_levitt এর উত্তর পরীক্ষা করেছি। (1) আপনার একটি ওয়েবকনফিগ রয়েছে তা নিশ্চিত করুন। একটি যোগ না হলে। (২) সমাধানটি এক্সপ্লোরার এক্সপ্লোরারে নির্বাচন করে এবং [Ctrl] + [এস] জারি করে সমাধানটি সংরক্ষণ করুন (3) সলিউশন এক্সপ্লোরারে প্রকল্পটি নির্বাচন করুন এবং টার্গেট ফ্রেমওয়ার্কটি 4.7.2 এ পরিবর্তন করুন (4) মেনু বিল্ড> এএসপি.এনইটি সংকলন থেকে "সর্বশেষ সি # ... সক্ষম" বিকল্পটি নির্বাচন করুন।
ডেনি জ্যাকব

2

আমার ওয়েবএপিআই প্রকল্পে জিরো পরিবর্তন করার পরে আমি এই ত্রুটিটি পেয়েছি। আমি ডটনেটকম্পিলারপ্ল্যাটফর্ম নুগেট প্যাকেজটি আনইনস্টল করে পুনরায় ইনস্টল করেছি, যা সমস্যার সমাধান করেছে।

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