Bagaimana cara menonaktifkan dukungan C # 6 di Visual Studio 2015?

137

Latar Belakang

Kami memiliki proyek yang sedang kami kembangkan di VS 2015 dengan C # 6 diaktifkan yang terkadang perlu dibuka oleh pengembang menggunakan VS 2013 tanpa C # 6.

Kami tidak berniat untuk menggunakan C # 6 dalam solusi khusus ini (sebanyak yang saya inginkan).

Masalah

Visual Studio dan ReSharper menyarankan membantu C # 6 bahasa konstruksi yang membuat solusi tidak dapat beroperasi di versi Visual Studio tanpa dukungan C # 6.

Saya telah menonaktifkan dukungan ReSharper C # 6 tetapi saya tidak dapat menonaktifkan / membatasi fitur C # di seluruh solusi.

Pertanyaan

Bagaimana cara membatasi kemampuan C # ke C # 5 dalam solusi atau dalam Visual Studio 2015?

SeanKilleen
sumber
17
Bangun tab, tombol Lanjutan, Pengaturan versi bahasa.
Hans Passant
@HansPassant terima kasih! Inilah tepatnya. Saya akan menuliskannya di formulir jawaban tetapi jika Anda memposting jawabannya di sini, saya pasti akan menandai milik Anda sebagai jawaban yang benar.
SeanKilleen
Persis masalah saya! kecuali solusi kami pada tahun 2013, tetapi saya ingin terus menggunakan VS2015 sebagai gantinya.
anish
@entah belum tentu ada kebutuhan; Anda selalu bisa tidak menggunakan fitur C # 6. Visual studio dan resharper sangat membantu menyarankan pemfaktoran ulang yang memanfaatkan fitur ini. Selama mesin build Anda mendukung C # 6, ini seharusnya tidak menjadi masalah.
SeanKilleen
Saya tidak ingin menggunakan c # 6 ... tetapi saya masih mendapatkan saran itu .. saya menghapusnya untuk resharper .. tetapi meminta studio visual ... saya kira studio visual tidak akan memberikan intellisense yang menyarankan c # 6 karena .net saya Kerangka kerja adalah 4,5
harishr

Jawaban:

137

Anda dapat menyetel fitur bahasa untuk setiap proyek secara terpisah dengan membuka Properties => Build tab => Advanced button => Language Versiondan menyetel versi pilihan Anda.

Anda harus menyadari bahwa itu masih akan menggunakan "C # 6.0" baru. Platform Kompilator Bersih (nama kode Roslyn). Namun, kompilator itu akan meniru perilaku kompiler lama dan akan membatasi Anda pada fitur yang hanya tersedia pada versi bahasa tertentu itu.


Saya tidak berpikir bahwa ada pengaturan luas solusi yang tersedia.

i3arnon
sumber
1
Apakah Anda tahu jika ada pengaturan yang setara untuk VB.NET?
Bradley Uffner
2
Saya mendapat jawaban saya lebih awal hari ini. stackoverflow.com/questions/31454902/…
Bradley Uffner
1
Setelah perubahan pada properti Proyek, Studio saya hanya menandai kode C # 6.0 di editor. Tetapi tidak memperlakukannya sebagai kesalahan (berhasil dibangun).
Eugene Griaznov
2
Jika Anda memiliki banyak proyek, saya sarankan mengedit csproj secara langsung. Tambahkan yang berikut di dalam PropertyGroupelemen pertama :<LangVersion>5</LangVersion>
mhand
Bekerja dengan cara yang persis sama untuk menonaktifkan dukungan C # 7 di VS2017 - gunakan <LangVersion>6</LangVersion>saja.
Paul Suart
49

tambahkan di bawah ini .sln.DotSettingsharus menonaktifkannya di tingkat solusi

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

Atau jika Anda tidak memiliki .sln.DotSettingsfile:

  1. Jika file solusi Anda bernama Apple.sln, buat file di sampingnya bernama Apple.sln.DotSettings.

  2. Berikan isinya sebagai berikut:

    <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. Tutup dan buka kembali solusinya, Resharper seharusnya hanya memperingatkan Anda tentang C # 5 hal.

  4. Jangan lupa untuk menghapus ini saat Anda akhirnya mulai menggunakan fitur C # 6! :)

harishr
sumber
1
Ini harus ditandai sebagai jawaban karena berlaku untuk semua proyek dalam suatu solusi dan file dapat diperiksa.
twoleggedhorse
8
@twoleggedhorse sebenarnya jawaban ini hanya relevan untuk Resharper yang OP sudah dinonaktifkan, jadi dia bahkan tidak menjawab pertanyaannya.
i3arnon
1
Saya juga setuju bahwa, ini harus ditandai sebagai jawaban. OP telah bertanya tentang solusi pengaturan lebar, yang HANYA memberikan jawaban ini.
sam-xor
1
Nah, bagaimanapun ini tidak mencegah Visual Studio untuk menunjukkan rekomendasi Microsoft sendiri untuk perbaikan kode (itu pertanyaan sebenarnya untuk mencegahnya). Jawaban ini berfungsi untuk ReSharper, bukan untuk Visual Studio (Tidak semua dari kita menggunakan ReSharper).
Stephen Reindl
11

Ini alat yang saya tulis dapat membantu Anda jika Anda memiliki banyak proyek yang Anda butuhkan untuk set LangVersionuntuk.

khellang
sumber
10

Anda dapat mengatur fitur bahasa untuk semua solutions/csprojdengan MSBuildUserExtensionsPath.

Cari nilai $(MSBuildUserExtensionsPath), itu harus sepertiC:\Users\$(User)\AppData\Local\Microsoft\MSBuild

Kemudian edit file Force.LangVersion.ImportBefore.propsdi folder tersebut $(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBeforedengan:

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

Langkah-langkahnya telah ditulis di atas, tinggal menambahkan screenshot lebih lanjut dari VS2015 saya:

Properti proyek >> Build >> Advanced >> Versi bahasa

masukkan deskripsi gambar di sini

Saya mengaturnya ke C # 5.0.

Raghav
sumber
8

Klik kanan pada Project di Project Explorer dan pilih Properties.

Ketika tab Properties terbuka pilih Build dan klik tombol Advance di kanan bawah.

Ada kotak drop-down yang disebut Versi Bahasa. Ubah pilihan menjadi "C # 5.0"

Nicknow
sumber