Visual Studio 2015'te C # 6 Desteğini nasıl devre dışı bırakabilirim?


136

Arka fon

VS 2015'te C # 6 etkinleştirilmiş olarak geliştirdiğimiz ve bazen C 2013 olmadan VS 2013 kullanan geliştiriciler tarafından açılması gereken bir projemiz var.

Bu özel çözümde (istediğim kadar) C # 6 kullanmak gibi bir niyetimiz yok.

Sorun

Visual Studio ve ReSharper, C # 6 desteği olmadan Visual Studio'nun önceki sürümlerinde çözümü çalışmaz hale getiren yararlı C # 6 dil yapıları önerir.

Ben ettik ReSharper C 6. desteğini devre dışı ama ben bütün çözüm genelinde özellikleri devre dışı / limit C # gibi olamaz.

Soru

Bir çözüm veya Visual Studio 2015 içinde C # ile C # 5 özelliklerini nasıl sınırlayabilirim?


17
Derleme sekmesi, Gelişmiş düğmesi, Dil sürümü ayarı.
Hans Passant

@HansPassant teşekkürler! Aynen öyle. Cevap formuna yazacağım ama cevabı buraya gönderirseniz, sizinkini doğru olarak işaretlediğinizden emin olacağım.
SeanKilleen

Kesinlikle benim sorunum! ancak çözümümüz 2013'te, ancak bunun yerine VS2015 kullanmaya devam etmek istiyorum.
anish

@entre mutlaka bir ihtiyaç yoktur; C # 6 özelliklerini her zaman kullanamazsınız . Visual studio ve resharper bu özellikleri kullanan yeniden düzenleme önerilerinde yardımcı olur. Derleme makineniz C # 6'yı desteklediği sürece sorun olmamalı.
SeanKilleen

C # 6 kullanmak istemiyorum ... ama hala bu önerileri alıyorum .. onları resharper için kaldırdım .. ama görsel stüdyo istiyor ... görsel stüdyo c # 6 düşündüren intellisense vermeyeceğim çünkü sanırım .net çerçeve 4.5
harishr

Yanıtlar:


136

Properties => Build tab => Advanced button => Language VersionTercih ettiğiniz sürümü seçerek her bir proje için dil özelliğini ayrı ayrı ayarlayabilirsiniz.

Hala yeni "C # 6.0" .Net Derleyici Platformu (kodlu Roslyn) kullanacağını fark etmelisiniz. Ancak, bu derleyici eski derleyicilerin davranışını taklit eder ve sizi yalnızca o belirli dil sürümünde bulunan özelliklerle sınırlar.


Çözüm çapında bir ortam olduğunu düşünmüyorum.


1
VB.NET için eşdeğer bir ayar olup olmadığını biliyor musunuz?
Bradley Uffner

2
Cevabımı bugün erkenden aldım. stackoverflow.com/questions/31454902/…
Bradley Uffner

1
Project özelliklerindeki değişikliklerden sonra Studio'm C # 6.0 kodunu düzenleyicide işaretler. Ancak hata olarak değerlendirmez (başarıyla oluşturulur).
Eugene Griaznov

2
Çok fazla projeniz varsa, doğrudan csproj'u düzenlemenizi tavsiye ederim. İlk PropertyGroupöğenin içine aşağıdakini ekleyin :<LangVersion>5</LangVersion>
mhand

VS2017'de C # 7 desteğini devre dışı bırakmak için tam olarak aynı şekilde çalışır - <LangVersion>6</LangVersion>bunun yerine kullanın.
Paul Suart

49

.sln.DotSettingsçözüm düzeyinde devre dışı bırakmanız gereken aşağıya ekleyin

<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>

Veya bir .sln.DotSettingsdosyanız yoksa :

  1. Çözüm dosyanız Apple.sln olarak adlandırılmışsa, yanında Apple.sln.DotSettings adlı bir dosya oluşturun.

  2. Aşağıdaki içeriği verin:

    <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
    </wpf:ResourceDictionary>
  3. Çözümü kapatın ve yeniden açın, Resharper sizi sadece C # 5 şeyleri hakkında uyarmalıdır.

  4. Sonunda C # 6 özelliklerini kullanmaya başladığınızda bunu kaldırmayı unutmayın! :)


1
Bu, bir çözüm içindeki tüm projeler için geçerli olduğu ve bir dosyanın teslim edilebileceği için yanıt olarak işaretlenmelidir.
twoleggedhorse

8
@twoleggedhorse aslında bu cevap sadece OP'nin zaten devre dışı bıraktığı Resharper ile ilgilidir, bu yüzden soruya cevap bile vermez.
i3arnon

1
Ayrıca, bunun cevap olarak işaretlenmesi gerektiğini de kabul ediyorum. OP, SADECE bu cevabın sağladığı geniş çözüm ayarlarını sordu.
sam-xor

1
Her neyse, bu Visual Studio'nun kod iyileştirmeleri için Microsoft'un kendi önerilerini göstermesini engellemez (bunları önlemek için asıl soru buydu). Bu yanıt, Visual Studio için değil, ReSharper için geçerlidir (Hepimiz ReSharper kullanmıyoruz).
Stephen Reindl

11

Ayarlamanız gereken birçok projeniz varsa, yazdığım bu araç size yardımcı olabilir LangVersion.


10

Hepiniz için dil özelliğini ayarlayabilirsiniz solutions/csprojile MSBuildUserExtensionsPath.

Değerini arayın $(MSBuildUserExtensionsPath), böyle bir şey olmalıC:\Users\$(User)\AppData\Local\Microsoft\MSBuild

Ardından Force.LangVersion.ImportBefore.propsklasördeki dosyayı şu şekilde düzenleyin $(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LangVersion>5</LangVersion>
  </PropertyGroup>
</Project>

9

Adımlar yukarıda yazılmış, sadece VS2015'imin bir ekran görüntüsünü ekliyor:

Projenin özellikleri >> Yapı >> Gelişmiş >> Dil versiyonu

resim açıklamasını buraya girin

Bunu C # 5.0 olarak ayarladım.


8

Project Explorer'da Project'e sağ tıklayın ve Özellikler'i seçin.

Özellikler sekmesi açıldığında Oluştur'u seçin ve sağ alt taraftaki Gelişmiş düğmesini tıklayın.

Dil Sürümü adlı bir açılır kutu vardır. Seçimi "C # 5.0" olarak değiştirin

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.