উইন্ডোজ ২০০ 2008 সার্ভার মেশিনে একটি নতুন এএসপি.নেট এমভিসি অ্যাপ্লিকেশন (সরাসরি ভিএস 2015 সম্প্রদায়ের বাইরে) চালানোর সময় এই ত্রুটিটি পেয়েছে।
উইন্ডোজ ২০০ 2008 সার্ভার মেশিনে একটি নতুন এএসপি.নেট এমভিসি অ্যাপ্লিকেশন (সরাসরি ভিএস 2015 সম্প্রদায়ের বাইরে) চালানোর সময় এই ত্রুটিটি পেয়েছে।
উত্তর:
এতে প্রচুর লোক ছুটে চলেছে, তাই আমি এখানে পোস্ট করতে চেয়েছিলাম।
এই লোকটির জন্য একটি ক্রেজি সহজ শ্রমসাধ্য ধন্যবাদ খুঁজে পেয়েছে : এক্সপার্টদেবাগার ।
কেবল আপনার ভাষা সংস্করণটিকে সি # 6 থেকে সি # 5 তে ডাউনগ্রেড করুন, এর মতো:
<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.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+">
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
</compilers>
</system.codedom>
langversion:6
নীচের দিকে 6 থেকে 5 পর্যন্ত পরিবর্তন করুন -langversion:5
এটা আমার জন্য স্থির। তাকে ধন্যবাদ।
আপনি যদি সি # 6.0 ব্যবহার করতে চান:
.config
নিম্নলিখিত পরিবর্তনগুলি সম্পাদন করতে আপনার ফাইলটি পরীক্ষা করুন ।এটি সন্ধান করুন system.codedom
এবং এটি সংশোধন করুন যাতে এটি নীচের মত দেখায়:
<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>
আমি দেখেছি যে আমার ক্ষেত্রে ত্রুটির সরাসরি কারণ ছিল:
এই ত্রুটিটি বোঝায় যে ভাষার জন্য একটি অবৈধ বিকল্প রয়েছে বলে বোঝানো হচ্ছে।
তবে, এটি আগে ভাল কাজ করছিল - সুতরাং এটি অবশ্যই নির্বাচিত হয়েছে। কি পরিবর্তন হয়েছে? আমার টিমের কোনও সদস্য বনাম ২০১ vs-তে উন্নীত হয়েছে, যখন আমি এখনও 2015 ব্যবহার করছিলাম he প্রকল্পে পরিবর্তন করার পরে, ভাষা সংস্করণটি পরিবর্তিত হয়েছিল এবং উত্স নিয়ন্ত্রণের মাধ্যমে আমি সেই পরিবর্তন পেয়েছি। তবে নির্বাচিত সংস্করণটি আমার বনামের সংস্করণে উপলভ্য ছিল না, সুতরাং এটি ফাঁকা ছিল - সুতরাং ত্রুটি। ভাষা ড্রপ ডাউন (আমি ডিফল্ট চয়ন করেছি) একটি মান নির্বাচন করার পরে, একটি নতুন ত্রুটি পপ আপ। নতুন ত্রুটি কোডের যে কোনও লাইনে সি # এর নতুন সংস্করণ ব্যবহার করেছে এমন বিল্ড ব্যর্থতা সৃষ্টি করেছিল। আমি একই ফাংশন সম্পাদন করতে কোডটি পরিবর্তন করেছি, তবে আমার সি # সংস্করণ সিনট্যাক্স এবং সমস্যাটি সমাধান করে।
সুতরাং ত্রুটির সরাসরি কারণটি ভাষা সংস্করণটির একটি অবৈধ নির্বাচন ছিল, মূল কারণটি বিভিন্ন বনাম / সি # সংস্করণ বিরোধী।
আমার ক্ষেত্রে ত্রুটিটি ছিল:
ত্রুটি CS1617 / langversion জন্য অবৈধ বিকল্প 'সর্বশেষ'; অবশ্যই আইএসও -1, আইএসও -2, ডিফল্ট বা 1 থেকে 6 এর পরিসরের পূর্ণসংখ্যা হতে হবে।
আমি নোটপ্যাড দিয়ে আমার .csproj ফাইলটি খুললাম এবং আমি এই লাইনটি দেখেছি:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
আমি পূর্ণসংখ্যা 1 থেকে 6 এর মধ্যে পূর্ণসংখ্যার জন্য পরিবর্তন করেছি
<LangVersion>6</LangVersion>
ত্রুটি উধাও!
আমার ক্ষেত্রে আমি ভুল এমএসবিল্ড.এক্সই ব্যবহার করছিলাম, যা পাওয়া গেছে:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
ত্রুটিটি সমাধান করার জন্য, আমি ভিজুয়াল স্টুডিও 2017 এমএসবিল্ড.এক্সই ব্যবহার শুরু করতে আমার PATH পরিবেশ পরিবর্তনশীলটি আপডেট করেছি:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe
বিশদ জন্য এই লিঙ্কটি দেখুন: ত্রুটি CS1056: একটি tfs অবিচ্ছিন্ন ইন্টিগ্রেশন প্রক্রিয়াতে এমএসবিল্ড চলমান অপ্রত্যাশিত অক্ষর '$'
ভাষার সংস্করণটি 6 থেকে 5 এ পরিবর্তনের পরিবর্তে, সংকলক ট্যাগটিতে "টাইপ" বৈশিষ্ট্যটি পরিবর্তন করুন
Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
প্রতি
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
আমার কাছে সবচেয়ে সহজ সমাধানটি প্যাকেজ ম্যানেজারের মাধ্যমে নেট নেট কম্পাইলারগুলি আপগ্রেড করা ছিল
ইনস্টল-প্যাকেজ মাইক্রোসফট. নেট.কম্পেলার্স
এবং তারপরে এটিতে ওয়েব.কনফিগ লাইনগুলি পরিবর্তন করা
<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>
দেখা যাচ্ছে এটি একটি সমস্যা ছিল, কারণ এএসপি.নেট এমভিসি 4 প্রকল্পটি মাইক্রোসফট. নেট.কম্পিলার্স প্যাকেজের একটি নির্দিষ্ট সংস্করণ উল্লেখ করেছে। ভিজ্যুয়াল স্টুডিও এই নির্দিষ্ট প্যাকেজটির সংকলকটি ব্যবহার করছিল, এবং কম্পিউটারে অন্যথায় ইনস্টল করা সংকলকটি নয়।
VS2019 :-) থেকে একটি সতর্কতা বা কিছু চমৎকার হত
এরপরে সমাধানটি হ'ল মাইক্রোসফ্ট. নেট.কম্পিলার্স প্যাকেজটিকে নতুন সংস্করণে আপডেট করা।
সংস্করণ 1.x সি # 6 এর জন্য সংস্করণ 2.x সি # 7 সংস্করণের জন্য 3.x সংস্করণ 3.x সি # 8 এর জন্য এটি কীভাবে সমাধান করতে পেলাম তা তাত্ক্ষণিকভাবে সুস্পষ্ট ছিল না। ভিজ্যুয়াল স্টুডিও প্রস্তাব বা ইঙ্গিত দিতে পারে যে আমার দ্বারা প্রকল্পের সেটিংসে একটি নতুন সংস্করণ নির্বাচন করে যে সেটিংস এখন প্রকল্পে ইনস্টল হওয়া প্যাকেজের সাথে সাংঘর্ষিক।
(আইডিই আসলেই কোন সিএসসি.এক্সই ব্যবহার করতে চাইছে তা নির্ধারণের জন্য ডায়াগনস্টিক স্তরের এমএসবিল্ড লগিং চালু করেছিলাম)
আমি এইমাত্র পরিবর্তন langversion
করতে default
এবং এটা আমার জন্য কাজ করেন। ভিএস 2015
<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:default /nowarn:1659;1699;1701″>
<providerOption name=”CompilerVersion” value=”v4.0″/>
</compiler>
<compiler language=”vb;vbs;visualbasic;vbscript” extension=”.vb” type=”Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+”>
<providerOption name=”CompilerVersion” value=”v4.0″/>
</compiler>
</compilers>
সমাধানটি পরিষ্কার করুন এবং আবার তৈরি করুন আমার ক্ষেত্রে, পূর্ববর্তী সেটিংস যাই হোক না কেন অমিলের কারণে অবরুদ্ধ ছিল। আমি একটি নতুন প্রকল্প আমদানি করেছি এবং এটি তৈরি করেছি, সংস্করণ এবং সমস্ত পরিবর্তন করার চেষ্টা করেছি। সমাধানগুলি পরিষ্কার করুন এবং আমার পক্ষে কাজ করেছেন।
আমার ক্ষেত্রে, আমি জিআইটিউব থেকে ম্যাটোরগ দ্বারা কীক্লোক বাস্তবায়নের নমুনা কোড সহ একটি লাইব্রেরি ডাউনলোড করছি: https://github.com/mattmorg55/Owin.Security.Keycloak/tree/dev/sample
সমাধানটি বেশ সহজ ছিল, যেমন আমি ব্যবহার করেছি। নেট ফ্রেমওয়ার্ক 4.6.1, কিন্তু প্রকল্পটি শুরুতে আমাকে 4.6.2 ব্যবহার করার জন্য অনুরোধ করেছিল। যদিও আমি এটি ডাউনলোড করেছি, এটি প্রথম সক্রিয়ভাবে বেছে নেওয়া হয়েছিল, যখন ভিজ্যুয়াল স্টুডিয়ানের সমস্ত উদাহরণ পুনঃসূচনা করে (বা আরও ভালভাবে সমস্ত উদাহরণ বন্ধ করে দেওয়া হয়)। প্রকল্পটি 4..6.১ এ হেরফের করা হয়েছিল (যদিও আমি তা না চাই এবং এটি বেছে নিই)।
সুতরাং আমি আবার কনফিগারেশন চয়ন করার পরে চয়ন। নেট ফ্রেমওয়ার্ক 4.6.1 ত্রুটি তত্ক্ষণাত বিলুপ্ত।
আমার ক্ষেত্রে ত্রুটি বার্তাটি ছিল:
এসপিএনটেকোম্পিলার: ত্রুটি CS1617: / ল্যাঙ্গভার্সনের জন্য অবৈধ বিকল্প '7.3'; অবশ্যই আইএসও -1, আইএসও -2, ডিফল্ট বা 1 থেকে 6 এর পরিসরের পূর্ণসংখ্যা হতে হবে।
যেমনটি এই গিটহাব ইস্যুতে বলা হয়েছে , এবং এই ভিএস বিকাশকারী সম্প্রদায় পোস্টটি মনে হচ্ছে এটি কোনও পুরানো মাইক্রোসফট.কোডডম.প্রভাইডার্স.ডটনেটকম্পিলারপ্ল্যাটফর্ম নুগেট প্যাকেজে একটি বাগ রয়েছে ।
এই নিউগেট প্যাকেজটি 3.6.0 এ আপগ্রেড করার পরেও আমার ওয়েব অ্যাপ্লিকেশনটিতে ত্রুটিটি এখনও অব্যাহত রয়েছে।
আমি জানতে পেরেছিলাম যে এই কাজটি করার জন্য আমাকে আমার ওয়েব অ্যাপ্লিকেশনটিতে একটি পুরানো "বিন \ রোজলিন" ফোল্ডারটি মুছতে হয়েছিল।
দেখে মনে হচ্ছে যে নতুন মাইক্রোসফ্ট.কডডম.প্রভাইডার্স.ডটনেটকম্পিলার প্ল্যাটফর্ম নুগেট প্যাকেজ (আমার ক্ষেত্রে ৩.6.০) তার নিজস্ব "রোজলিন" ফোল্ডারটি আর এনেছে না এবং উপস্থিত থাকলে সেই পুরানো "রোজলিন" ফোল্ডারটি সংকলনের সময় অগ্রাধিকার নিয়েছিল।
আমার রেপোটিকে নতুন জায়গায় সরিয়ে নেওয়ার পরে টেনে নামানোর সময় আমার সাথে এটি ঘটেছিল। সমাধানটি ছিল লোড করা এবং তারপরে প্রতিটি ত্রুটি দেখানো প্রতিটি প্রকল্প পুনরায় লোড করা।
আমি কয়েকটি অন্যান্য বিকল্প চেষ্টা করেছিলাম কিন্তু কিছুই আমার পক্ষে কার্যকর হয়নি। এছাড়াও এই পরিস্থিতিতে আমার কনফিগার ফাইলগুলি ভাষা রূপান্তর 6 ব্যবহার করার জন্য সেট করা হয়েছিল, তাই তাদের ডিফল্টরূপে সেট করার ফলে সমস্যাটি স্থির হয়নি।
যদি সর্বোপরি সমস্ত বিকল্প কাজ করে না থাকে এবং আপনি মাইক্রোসফট. নেট.কম্পিলার এবং কোডডম এর মতো নুগেট প্যাকেজ ব্যবহার করেছেন এবং এখনও কাজ না করছেন তবে আপনার প্রকল্প ফাইল ওপেন প্রকল্প ফাইলের সাথে সমস্যা আছে। প্রজেক্ট ফাইল একটি সংকলক বিকল্প ব্যবহার করছে যা আপনার নির্বাচিত ভাষা সমর্থন করে না। নোটপ্যাড ++ দিয়ে প্রকল্প ফাইলটি খুলুন এবং নিম্নলিখিত লাইনটি সরিয়ে দিন।
অর্গিনাল প্রকল্প ফাইল
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
<!--Don't delete below one-->
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
নিম্নলিখিত লাইনগুলি সরান
<Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />