Bagaimana cara mengaktifkan fitur C # 6.0 di Visual Studio 2013?

201

Saya telah melalui fitur terbaru yang diperkenalkan di C # 6.0 dan hanya mengikuti contoh penginisialisasi properti otomatis,

class NewSample
{
    public Guid Id { get; } = Guid.NewGuid();
}

tetapi IDE saya tidak mengenali sintaks.

Saya bertanya-tanya bagaimana saya bisa mengaktifkan C # 6.0 di Visual Studio 2013. Kerangka kerja yang saya gunakan adalah 4.5.1.

Hassaan
sumber
7
Saya tidak percaya itu mungkin pada tahun 2013. Sebaliknya, lihatlah VS 14 CTP atau pratinjau VS 2015.
Jeroen Vannevel
Nah, Anda memerlukan kompiler terbaru, yang bukan bagian dari VS 2013, jadi saya pikir itu tidak mungkin.
Rufus L
2
baik, saya hanya mencari tahu apakah ms merilis pembaruan atau tidak
Hassaan
1
@ PauloMorgado Apa artinya 'itu' di "versi itu sudah usang"? 4.5.1, VS2013, atau VS2014CTP?
ProfK
2
Bisakah Anda memperbarui jawaban pada pertanyaan ini ke @Deef
Chris Marisic

Jawaban:

64

Informasi untuk perangkat lunak pra-rilis usang:

Menurut ini hanya menginstal dan pergi untuk Visual Studio 2013:

Bahkan, menginstal kompiler C # 6.0 dari rilis ini melibatkan sedikit lebih banyak daripada menginstal ekstensi Visual Studio 2013, yang pada gilirannya memperbarui file target MSBuild.

Jadi, ambil saja file-file itu dari https://github.com/dotnet/roslyn dan Anda siap berangkat.

Anda harus tahu bahwa ini adalah versi spesifikasi yang sudah usang yang diterapkan di sana, karena mereka tidak lagi memperbarui paket untuk Visual Studio 2013 :

Anda juga dapat mencoba Pratinjau Pengguna Akhir April, yang dipasang di atas Visual Studio 2013. (catatan: pratinjau VS 2013 ini sudah ketinggalan zaman, dan tidak lagi diperbarui)

Jadi jika Anda ingin menggunakan versi terbaru, Anda harus mengunduh Visual Studio 2015 .

Patrick Hofman
sumber
7
Sayangnya, pratinjau pengguna akhir untuk 2013 telah ditutup :(
Hassaan
4
Hanya untuk memastikan, tidak ada cara yang didukung untuk menulis dalam C # 6 menggunakan VS 2013? Apakah saya harus menggunakan VS 2015?
vorou
2
Itu betul. @vorou ​​Tidak ada versi pratinjau terbaru untuk VS 2013.
Patrick Hofman
5
Sebenarnya ini adalah caranya (lihat jawaban saya). Tapi itu berbeda dari apa yang bisa Anda lakukan berbulan-bulan yang lalu sebelum rilis final.
David De Sloovere
1
tidak ada solusi dalam topik ini atau topik serupa lainnya yang membantu saya. jadi satu-satunya jalan keluar adalah pindah ke VS 2015 kurasa.
Yar
177

Di bawah VS2013 Anda dapat menginstal kompiler baru ke proyek sebagai paket nuget . Dengan begitu Anda tidak perlu VS2015 atau server build yang diperbarui.

https://www.nuget.org/packages/Microsoft.Net.Compilers/

Install-Package Microsoft.Net.Compilers

Paket ini memungkinkan Anda untuk menggunakan / membuat kode / sintaks C # 6.0. Karena VS2013 tidak secara alami mengenali sintaks C # 6.0 baru, itu akan menunjukkan kesalahan di jendela editor kode meskipun itu akan membangun dengan baik .

Dengan menggunakan Resharper, Anda akan mendapatkan garis berlekuk-lekuk pada fitur C # 6, tetapi bohlam memberi Anda opsi untuk 'Aktifkan dukungan C # 6.0 untuk proyek ini' (pengaturan disimpan ke .DotSettings).

Seperti yang disebutkan oleh @ stimpy77: untuk dukungan dalam tampilan MVC Razor Anda akan memerlukan paket tambahan (bagi mereka yang tidak membaca komentar)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Jika Anda ingin dukungan penuh C # 6.0, Anda harus menginstal VS2015.

David De Sloovere
sumber
8
Konstruktor utama sebenarnya dihapus dari rilis final. Itu sebabnya mereka tidak bekerja.
Mark A. Donohoe
8
Hanya ingin menunjukkan bagi siapa saja yang ingin menggunakan C # 6 di Razor dalam proyek MVC5, sepertinya itu adalah paket NuGet yang terpisah, dan diperlukan bahkan jika Anda menggunakan VS2015. Lihat stackoverflow.com/a/30832849/11398
Jon Davis
2
Ini berfungsi (seperti pada Anda dapat mengkompilasi), namun VS2013 masih menunjukkan kesalahan: stackoverflow.com/questions/35796001/…
mnwsmit
2
hehehe. Ini keren. Compiler menunjukkan kesalahan sebelumnya tetapi kompilasi berhasil ketika benar-benar dikompilasi. Betapa hack untuk memulai akhir pekan pagi!
RBT
1
itu akan menampilkan kesalahan di jendela editor kode meskipun itu akan membangun dengan baik. Hanya merasa perlu menunjukkannya lagi. Jawaban bagus!
meJustAndrew
5

Banyak jawaban di sini ditulis sebelum Roslyn (open-source .NET C # dan VB compiler) pindah ke .NET 4.6. Jadi mereka tidak akan membantu Anda jika proyek Anda menargetkan, katakanlah, 4.5.2 seperti milik saya (diwariskan dan tidak dapat diubah).

Tetapi Anda dapat mengambil Roslyn versi sebelumnya dari https://www.nuget.org/packages/Microsoft.Net.Compiler dan menginstalnya alih-alih versi terbaru. Saya menggunakan 1.3.2. (Saya mencoba 2.0.1 - yang tampaknya merupakan versi terakhir yang berjalan pada .NET 4.5 - tetapi saya tidak dapat membuatnya untuk mengkompilasi *.) Jalankan ini dari konsol Package Manager di VS 2013:

PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2

Kemudian mulai kembali Visual Studio. Saya punya beberapa masalah pada awalnya; Anda perlu mengatur versi C # kembali ke default (C # 6.0 tidak muncul dalam daftar versi tetapi tampaknya telah dijadikan default), lalu bersihkan, simpan, mulai ulang VS dan kompilasi ulang.

Menariknya, saya tidak memiliki kesalahan IntelliSense karena fitur C # 6.0 yang digunakan dalam kode (yang merupakan alasan untuk menginginkan C # 6.0 di tempat pertama).

* versi 2.0.1 melemparkan kesalahan Tugas "Microsoft.CodeAnalysis.BuildTasks.Csc tidak dapat dimuat dari perakitan Microsoft.Build.Tasks.CodeAnalysis.dll. Tidak dapat memuat file atau perakitan 'Microsoft.Build.Utilities.Core, Versi = 14.0.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a 'atau salah satu dari dependensinya. Sistem tidak dapat menemukan file yang ditentukan. Konfirmasikan bahwa deklarasi itu benar, bahwa perakitan dan semua dependensinya tersedia, dan bahwa tugas tersebut mengandung kelas publik yang mengimplementasikan Microsoft.Build.Framework.ITask.

UPDATE Satu hal yang saya perhatikan sejak memposting jawaban ini adalah bahwa jika Anda mengubah kode apa pun selama debug ("Edit dan Lanjutkan"), Anda akan mendapati bahwa kode C # 6.0 Anda tiba-tiba akan muncul sebagai kesalahan dalam apa yang tampaknya dikembalikan ke lingkungan pra-C # 6.0. Ini membutuhkan restart dari sesi debug Anda. SANGAT menyebalkan terutama untuk aplikasi web.

SteveCinq
sumber
@RichBianco Bagus sekali - terima kasih atas umpan balik dan up-vote. Secara pribadi, saya tidak mengerti mengapa v2.0.1 tidak berfungsi. Jika ada yang punya petunjuk tentang ini - seperti dalam, menyingkirkan kesalahan yang saya laporkan - silakan posting perbaikan Anda.
SteveCinq
4

Perlu disebutkan bahwa waktu pembuatan akan ditingkatkan untuk pengguna VS 2015 setelah :

Install-Package Microsoft.Net.Compilers

Mereka yang menggunakan VS 2015 dan harus menyimpan paket ini di proyek-proyek mereka dapat memperbaiki peningkatan waktu pembuatan .

Edit file packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.propsdan bersihkan. File akan terlihat seperti:

<Project DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

Melakukan hal itu memaksa proyek untuk dibangun seperti sebelum menambahkan Microsoft.Net.Compilerspaket

Ashot Muradian
sumber
2

Dimungkinkan untuk menggunakan fitur C # 6.0 penuh di Visual Studio 2013 jika Anda memiliki Resharper.
Anda harus mengaktifkan Resharper Build dan voilá! Di Opsi Resharper -> Build - aktifkan Resharper Build dan di "Gunakan versi MSBuild.exe" pilih "Terbaru Diinstal"

Dengan cara ini Resharper akan membangun Proyek C # 6.0 Anda dan juga tidak akan menggarisbawahi kode C # 6.0 sebagai tidak valid.

Saya juga menggunakan ini walaupun saya memiliki Visual Studio 2015 karena:

  1. Tes Unit di Resharper tidak berfungsi untuk saya dengan Visual Studio 2015 karena beberapa alasan
  2. VS 2015 menggunakan lebih banyak memori daripada VS 2013.

Saya meletakkan ini di sini, karena saya sedang mencari solusi untuk masalah ini untuk beberapa waktu sekarang dan mungkin itu akan membantu orang lain.

devdimi
sumber
-1

Sepertinya ada beberapa kesalahpahaman. Jadi, alih-alih mencoba menambal VS2013 di sini dan menjawab dari orang Microsoft: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 60-selalu-didukung-oleh-vs-2013? Forum = roslyn

Jadi, tolong, baca dan instal VS2015.

Alexander Christov
sumber
1
tautannya memberi saya 'tidak diotorisasi' bahkan setelah login ms. Tentu saja, memasang VS2015 atau yang lebih baru adalah biaya £ XXX,000 di beberapa pengaturan.
Chris F Carroll