CS1617: / langversion için geçersiz '6' seçeneği; ISO-1, ISO-2, 3, 4, 5 veya Varsayılan olmalıdır


92

Windows 2008 Server makinesinde yeni bir ASP.NET MVC uygulaması (doğrudan VS 2015 Community'den) çalıştırırken bu hatayı almaya devam etti.


3
Dil sürümünü 5'e düşürün. Şuna bakın: Dil sürümü nasıl değiştirilir
NASSER

Benim durumumda, System.Web.Mvc.dll dosyasını 5.2.3 sürümünden 5.2.7'ye yükselttim, sürüm yanlış olduğundan bu sorunu düzeltti.
Dino Liu

Yanıtlar:


105

Pek çok insan bununla karşılaşıyor, bu yüzden buraya yazmak istedim.

Bu adam sayesinde çılgın ve kolay bir çözüm buldum : Expertdebugger .

Dil sürümünüzü C # 6'dan C # 5'e düşürmeniz yeterlidir, örneğin:

<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=\&quot;Web\&quot; /optionInfer+">
          <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
    </compilers>
</system.codedom>

Aşağıya langversion:6doğru 6'dan 5'e değiştirin -langversion:5

Benim için düzelt. Ona teşekkür et.


1
Bana yardımcı olan çok teşekkürler.
AH.

28
Bu sadece derleyiciye 6 yerine C # sürüm 5 ile derlemesini söylemektir, ki bu bir .NET 4.6 projesi yapıyorsanız istediğiniz şey değildir ... Gerçekten değiştirmeniz gereken şey derleyici tipidir, gösterildiği gibi bu sorunun diğer cevabı!
Nuno Agapito

1
Veya <system.codedom> bloğunun kendisini kaldırın, sorunu da düzeltir.
Anupam Singh

5
Bu nerede değiştirilsin? Demek istediğim, bu kodu nereye koymam gerekiyor?
Unbreakable

Bunu web.config veya app.config dosyanıza koyun
csharpforevermore

82

C # 6.0 kullanmak istiyorsanız:

  1. Projenizin .NET sürümünün 4.5.2'den yüksek olduğundan emin olun.
  2. Ardından .config, aşağıdaki değişiklikleri yapmak için dosyanızı kontrol edin .

Arayın system.codedomve aşağıda gösterildiği gibi görünecek şekilde değiştirin:

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

Tam olarak aradığım buydu. Bir ASP.NET MVC projesini .NET Framework 4.5.2'den 4.6'ya yükselttikten sonra bu hatayı almaya başladım. Emin değilim, ancak Visual Studio'nun bu satırları kendi başına güncellemesinin daha iyi olacağını düşünüyorum.
Zignd

3
Bu, sorunu gerçekten düzelttiğinden ve derleyicinin eski sürüme geri dönmek yerine en son sürümü kullanmasına izin verdiği için doğru yanıt yapılmalıdır
SM3RKY

1
SM3RKY ile aynı fikirde olun - bu yanıt, sorunu atlamaktan ziyade sorunu çözdüğü için daha önemlidir!
Jon Story

Çözümünüzü mevcut bir proje için VS 2015 Community veya altında .net 4.6'ya yükseltirseniz bu hata oluşur. VS 2015 Güncelleme 3'ü güncelledikten sonra, bu düzeltme yeni projeler için varsayılan olarak gelir. Ancak cevap kesin çözümdür!
Mahmut C

Bu, ASP.NET (web formları) ve VB.NET kullanan bir .Net 4.6.2 projesinde benim için sorunu çözdü
Eric Hewett,

14

Benim durumumdaki hatanın doğrudan sebebinin şuydu:

build -> advanced -> dil versiyonu

Bu mantıklıdır çünkü hata dil için geçersiz bir seçenek olduğunu belirtir.

ama bu daha önce iyi çalışıyordu - bu yüzden seçilmiş olmalı. Ne değişti? 2015'i kullanırken takımımdan bir üyenin 2017'ye yükseltildiği ortaya çıktı. Projede değişiklik yaptıktan sonra dil sürümü değiştirildi ve bu değişikliği kaynak kontrolü üzerinden aldım. ancak seçilen sürüm benim vs sürümümde mevcut değildi, bu yüzden boştu - dolayısıyla hata. Dil açılır menüsünde bir değer seçtikten sonra (varsayılanı seçtim), yeni bir hata ortaya çıktı. yeni hata, c # 'nin daha yeni sürümünü kullanan herhangi bir kod satırında derleme hatasına neden oluyordu. aynı işlevleri yerine getirmek için kodu değiştirdim, ancak c # sürüm sözdizimim ve sorun çözüldü.

bu nedenle, hatanın doğrudan nedeni gerçekten de geçersiz bir Dil Sürümü seçimi iken, temel neden farklı vs / c # sürümlerinin çakışmasından kaynaklanıyordu.


1
Bu cevap, diğerlerini kontrol ettikten sonra bana yardımcı oldu. teşekkürler
MindRoasterMir

1
Bu cevap, C # 8'e ayarlanmış bir projeyi çalıştırmaya çalıştığım durumum için de geçerliydi, ancak görsel stüdyom 2017'de desteklenmiyor. Sadece VS 2019
Vinícius Gabriel

13

Benim durumumda hata şuydu:

Hata CS1617 / langversion için geçersiz 'en son' seçeneği; ISO-1, ISO-2, Varsayılan veya 1 ila 6 aralığında bir tam sayı olmalıdır.

.Csproj dosyamı not defteri ile açtım ve şu satırı gördüm:

<PropertyGroup>
    <LangVersion>latest</LangVersion>
</PropertyGroup>

1 ile 6 arasındaki bir tam sayı için en sonuncuyu değiştirdim

<LangVersion>6</LangVersion>

Hata ortadan kalktı!


Çok teşekkür ederim! Şimdi VS2015 ve Unity2018'de hata ayıklama çalışıyor
8Observer8

Tam olarak not defterinde açılması gerekmez, ancak görsel incelemeden proje yükleyebilir ve sonra projeyi düzenleyebilir, bu da bu sorunu çözecektir.
Shantu

12

Benim durumumda, yanlış MSBuild.exe'yi kullanıyordum:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

Hatayı çözmek için, PATH ortam değişkenimi Visual Studio 2017 MSBuild.exe'yi kullanmaya başlayacak şekilde güncelleştirdim:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe

Ayrıntılar için lütfen bu bağlantıya bakın: Hata CS1056: msbuild'i tfs sürekli entegrasyon sürecinde çalıştıran beklenmeyen '$' karakteri


Aynı burada, benim durumumda MSBuild Araçlarını yükledim ve "C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe" den msbuild kullandım
falstaff

10

benim durumumda (proje başka bir sistemde yaratılır):

  1. projeyi temizleyin (çözüm gezgininde projeye sağ tıklayın ve öğeyi temizle'ye tıklayın).
  2. ardından proje oluşturun (çözüm gezgininde projeye sağ tıklayın ve oluştur öğesine tıklayın).

Bu projeyi yürütebilirim.


5

Dil sürümünü 6'dan 5'e değiştirmek yerine, derleyici etiketindeki "type" özniteliğini

Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

-e

Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

4

Microsoft.Net.Compilers Nuget paketini en son sürüme yükseltin (en az 2.x)


3

Benim için en kolay çözüm .Net Derleyicileri Paket Yöneticisi aracılığıyla yükseltmekti

Yükleme Paketi Microsoft.Net.Compilers

ve sonra Web.Config satırlarını buna değiştirmek

<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

ASP.NET MVC 4 projesi Microsoft.Net.Compilers paketinin belirli bir sürümüne başvurduğu için bunun bir sorun olduğu ortaya çıktı. Visual Studio, bilgisayarda başka şekilde yüklenmiş olan derleyiciyi değil, bu belirli paketteki derleyiciyi kullanıyordu.

VS2019'dan bir uyarı veya başka bir şey güzel olurdu :-)

Çözüm daha sonra Microsoft.Net.Compilers paketini daha yeni bir sürüme güncellemektir.

Sürüm 1.x, C # 6 içindir Sürüm 2.x, C # 7 içindir Sürüm 3.x, C # 8 içindir. Bunu nasıl çözeceğim hemen belli değildi. Visual Studio, proje ayarlarında yeni bir sürümü seçtiğimde, ayarın artık projeye yüklenen paketle çakıştığını önerebilir veya ima edebilirdi.

(IDE'nin gerçekten hangi CSC.EXE'yi kullanmaya çalıştığını bulmak için Tanılama düzeyi MSBuild günlüğünü açtım)

https://developercommunity.visualstudio.com/content/problem/519531/c-7x-versions-do-not-seem-to-work-in-vs2019.html



0

Sadece değişti langversionetmek defaultve bu benim için çalıştı. VS 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=\&quot;Web\&quot; /optionInfer+”>
      <providerOption name=”CompilerVersion” value=”v4.0″/>
  </compiler>
</compilers>


0

Temiz Çözüm ve Yeniden Oluşturun Benim durumumda, önceki ayarlar uyumsuzluk nedeniyle engelliyordu. Yeni bir proje aldım ve inşa ettim, versiyonları değiştirmeyi denedim. çözümleri temizleyin ve benim için işe yaradı.


0

Benim durumumda, GITHUB'dan mattorg tarafından keycloak uygulamasının örnek kodunu içeren bir kitaplık indiriyordum: https://github.com/mattmorg55/Owin.Security.Keycloak/tree/dev/samples

Net Framework 4.6.1'i kullandığım için çözüm oldukça kolaydı, ancak proje başlangıçta 4.6.2'yi kullanmam için bana yalvardı. İndirmiş olmama rağmen, Visual Studion'un tüm örneklerini yeniden başlatırken (veya daha iyisi tüm örnekleri kapatırken) ilk olarak aktif olarak seçildi. Proje 4.6.1'e manipüle edildi (istememe ve seçmeme rağmen).

Net Framework 4.6.1'i seçmek için yapılandırmayı tekrar seçtikten sonra hata hemen kayboldu.


0

Benim durumumda hata mesajı şuydu:

ASPNETCOMPILER: CS1617 hatası: / langversion için geçersiz seçenek '7.3'; ISO-1, ISO-2, Varsayılan veya 1 ila 6 aralığında bir tam sayı olmalıdır.

Bu GitHub sayısında belirtildiği gibi ve bu VS Developer Community gönderisi , eski bir Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet paketinde bir hata gibi görünüyor .

Bu NuGet paketini 3.6.0'a yükselttikten sonra hata web uygulamamda hala devam ediyor.

Çözüm

Bunun çalışması için Web Uygulamamdaki eski bir "bin \ Roslyn" klasörünü silmem gerektiğini öğrendim.

Görünüşe göre daha yeni Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet paketi (benim durumumda 3.6.0) artık kendi "Rosyln" klasörünü getirmiyor ve varsa, eski "Roslyn" klasörü derleme sırasında önceliğe sahip.


0

Bu, depomu yeni bir yere taşıdıktan sonra aşağı çektiğimde başıma geldi. Çözüm, bu hatayı gösteren her projeyi kaldırıp yeniden yüklemekti.

Birkaç başka seçeneği denedim ama hiçbir şey benim için işe yaramadı. Ayrıca bu durumda yapılandırma dosyalarım dil sürümü 6'yı kullanacak şekilde ayarlandı, bu nedenle bunları varsayılana ayarlamak sorunu çözmedi.


0

Her şeyden önce tüm seçenekler çalışmıyorsa ve Microsoft.Net.Compilers ve CodeDom gibi nuget paketleri kullandıysanız ve hala çalışmıyorsa, proje dosyanız açık proje dosyanızla ilgili bir sorun var demektir. Proje dosyası, seçtiğiniz dili desteklemeyen derleyici seçeneklerinden birini kullanıyor. Proje dosyasını notepad ++ ile açın ve aşağıdaki satırı kaldırın.

Orignal Proje Dosyası

<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')" />

Aşağıdaki satırları kaldırın

  <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')" />
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.