Windows 2008 सर्वर मशीन पर एक नया ASP.NET MVC एप्लिकेशन (वीएस 2015 समुदाय से सीधे बाहर) चलाते समय उस त्रुटि को रखा गया।
Windows 2008 सर्वर मशीन पर एक नया ASP.NET MVC एप्लिकेशन (वीएस 2015 समुदाय से सीधे बाहर) चलाते समय उस त्रुटि को रखा गया।
जवाबों:
बहुत सारे लोग इसमें भाग रहे हैं, इसलिए मैं यहां पोस्ट करना चाहता था।
इस आदमी के लिए एक पागल आसान वर्कअराउंड धन्यवाद मिला: Expertdebugger ।
बस अपने भाषा संस्करण को C # 6 से C # 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
मेरे लिए इसे तय किया। उसे धन्यवाद दो।
यदि आप C # 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>
मैंने पाया कि मेरे मामले में त्रुटि का सीधा कारण था:
यह समझ में आता है क्योंकि त्रुटि बता रही है कि भाषा के लिए एक अमान्य विकल्प है।
लेकिन, यह पहले ठीक काम कर रहा था - इसलिए इसे चुना जाना चाहिए था। किया बदल गया? मेरी टीम के एक सदस्य को बनाम 2017 में अपग्रेड किया गया है, जबकि मैं अभी भी 2015 का उपयोग कर रहा था। परियोजना में बदलाव करने के बाद, भाषा संस्करण बदल दिया गया और मुझे स्रोत नियंत्रण पर वह परिवर्तन प्राप्त हुआ। लेकिन चयनित संस्करण मेरे बनाम के संस्करण के लिए उपलब्ध नहीं था, इसलिए यह रिक्त था - इसलिए त्रुटि। भाषा ड्रॉप डाउन में मूल्य का चयन करने के बाद (मैंने डिफ़ॉल्ट चुना), एक नई त्रुटि पॉप अप हुई। नई त्रुटि कोड की किसी भी लाइन पर एक बिल्ड विफलता का कारण बन रही थी जो c # के नए संस्करण का उपयोग करती थी। मैंने समान कार्य करने के लिए कोड को बदल दिया, लेकिन मेरे c # संस्करण सिंटैक्स और समस्या के साथ हल किया।
इसलिए जबकि त्रुटि का प्रत्यक्ष कारण वास्तव में भाषा संस्करण का एक अवैध चयन था, मूल कारण अलग-अलग बनाम / सी # संस्करणों के विरोध के कारण था।
मेरे मामले में त्रुटि थी:
CS1617 के लिए अमान्य विकल्प 'नवीनतम' / langversion के लिए; ISO-1, ISO-2, डिफ़ॉल्ट या 1 से 6 की सीमा में पूर्णांक होना चाहिए।
मैंने नोटपैड के साथ अपनी .csproj फ़ाइल खोली और मैंने यह पंक्ति देखी:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
मैंने एक पूर्णांक के लिए नवीनतम को श्रेणी 1 से 6 में बदल दिया
<LangVersion>6</LangVersion>
त्रुटि गायब हो गई!
मेरे मामले में मैं गलत MSBuild.exe का उपयोग कर रहा था, जो इसमें पाया गया था:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
त्रुटि को हल करने के लिए, मैंने Visual Studio 2017 MSBuild.exe का उपयोग शुरू करने के लिए अपने PATH पर्यावरण चर को अपडेट किया:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe
कृपया इस लिंक को विवरण के लिए देखें: त्रुटि CS1056: अप्रत्याशित चरित्र '$' एक tfs निरंतर एकीकरण प्रक्रिया पर msbuild चल रहा है
मेरे मामले में (परियोजना एक अन्य प्रणाली में बनाएँ):
मैं इस प्रोजेक्ट को चला सकता हूं।
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
मेरे लिए सबसे आसान समाधान .net Compilers को पैकेज मैनेजर के माध्यम से अपग्रेड करना था
Microsoft.Net.Compilers स्थापित करें
और फिर इस के लिए 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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
पता चला कि यह एक समस्या थी, क्योंकि ASP.NET MVC 4 प्रोजेक्ट Microsoft.Net.Compilers पैकेज के एक विशिष्ट संस्करण को संदर्भित कर रहा था। विजुअल स्टूडियो इस विशिष्ट पैकेज से कंपाइलर का उपयोग कर रहा था, न कि कंपाइलर जो कंप्यूटर पर अन्यथा स्थापित किया गया था।
VS2019 :-) से एक चेतावनी या कुछ अच्छा होता
तब समाधान Microsoft.Net.Compilers पैकेज को एक नए संस्करण में अपडेट करने के लिए है।
संस्करण 1.x C # 6 के लिए है। संस्करण 2.x C # 7 के लिए है। संस्करण 3.x C # 8 के लिए है। मुझे यह हल करने के लिए कैसे मिला यह तुरंत स्पष्ट नहीं था। विजुअल स्टूडियो सुझाव दे सकता था या संकेत दे सकता था कि मेरे द्वारा प्रोजेक्ट सेटिंग्स में एक नया संस्करण का चयन किया गया है जो अब स्थापित करने से परियोजना में स्थापित पैकेज के साथ विरोधाभासी है।
(मैंने यह पता लगाने के लिए डायग्नोस्टिक्स के स्तर MSBuild लॉगिंग को समाप्त कर दिया कि कौन सा CSC.EXE आईडीई वास्तव में उपयोग करने की कोशिश कर रहा है)
मैं बस के लिए बदल गया 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>
स्वच्छ समाधान और निर्माण फिर से मेरे मामले में, जो भी पिछली सेटिंग्स बेमेल होने के कारण अवरुद्ध हो रही थीं। मैंने एक नई परियोजना का आयात किया और इसे बनाया, संस्करण और सभी बदलने की कोशिश की। समाधान को साफ करें और मेरे लिए काम करें।
मेरे मामले में, मैं एक पुस्तकालय डाउनलोड कर रहा था, जिसमें GITHUB से मैटबर्ग द्वारा कीक्लॉक कार्यान्वयन का नमूना कोड था: https://github.com/mattmorg55/Owin.Security.Keycloak/tree/dev/samples
समाधान काफी आसान था, जैसा कि मैंने .Net फ्रेमवर्क 4.6.1 का उपयोग किया था, लेकिन परियोजना ने शुरुआत में 4.6.2 का उपयोग करने के लिए मुझसे भीख मांगी। हालाँकि मैंने इसे डाउनलोड किया था, यह पहली बार सक्रिय रूप से चुना गया था, जब विज़ुअल स्टडीज के सभी उदाहरणों को पुनः आरंभ करें (या बेहतर सभी उदाहरणों को बंद करें)। इस परियोजना को 4.6.1 में हेरफेर किया गया था (हालांकि मैं कामना करता था और ऐसा नहीं चुना गया था)।
इसलिए मैंने कॉन्फ़िगरेशन को फिर से चुनने के लिए .Net फ्रेमवर्क 4.6.1 चुनने के बाद त्रुटि तुरंत गायब कर दी।
मेरे मामले में त्रुटि संदेश था:
ASPNETCOMPILER: त्रुटि CS1617: / langversion के लिए अमान्य विकल्प '7.3'; ISO-1, ISO-2, डिफ़ॉल्ट या 1 से 6 की सीमा में पूर्णांक होना चाहिए।
जैसा कि इस GitHub मुद्दे में कहा गया है , और इस VS डेवलपर समुदाय पोस्ट में यह एक पुराने Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet पैकेज में एक बग प्रतीत होता है ।
इस NuGet पैकेज को 3.6.0 में अपग्रेड करने के बाद भी त्रुटि मेरे वेब एप्लिकेशन में बनी रही।
मुझे पता चला कि मुझे यह काम करने के लिए अपने वेब एप्लिकेशन में एक पुराने "बिन \ रोसलिन" फ़ोल्डर को हटाना पड़ा।
ऐसा लगता है कि नए Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet पैकेज (मेरे मामले में 3.6.0) अब अपना खुद का "रोसिलन" फ़ोल्डर नहीं लाता है, और यदि मौजूद है, तो उस पुराने "रोसलिन" फ़ोल्डर ने संकलन के दौरान पूर्वता लिया।
यह मेरे साथ तब हुआ जब मैंने अपने रेपो को एक नए स्थान पर ले जाने के बाद नीचे खींच लिया। समाधान को अनलोड करना था और फिर प्रत्येक प्रोजेक्ट को फिर से लोड करना था जो इस त्रुटि को दिखा रहा था।
मैंने कुछ अन्य विकल्पों की कोशिश की लेकिन मेरे लिए कुछ भी काम नहीं किया। इसके अलावा इस स्थिति में मेरी कॉन्फिगर फाइलें भाषाविकास 6 का उपयोग करने के लिए सेट की गई थीं, इसलिए उन्हें डिफ़ॉल्ट रूप से सेट करने से समस्या ठीक नहीं हुई।
यदि उपरोक्त सभी विकल्प काम नहीं कर रहे हैं और आपने Microsoft.Net.Compilers और CodeDom जैसे नगेट पैकेजों का उपयोग किया है और अभी भी काम नहीं कर रहे हैं तो आपकी प्रोजेक्ट फ़ाइल ओपन प्रोजेक्ट फ़ाइल के साथ समस्या है। प्रोजेक्ट फ़ाइल एक संकलक विकल्प का उपयोग कर रही है जो आपकी चयनित भाषा का समर्थन नहीं करता है। नोटपैड ++ के साथ प्रोजेक्ट फ़ाइल खोलें और निम्न पंक्ति को हटा दें।
ओरिग्नल प्रोजेक्ट फाइल
<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')" />