วิธีการเปิดใช้งานคุณสมบัติ C # 6.0 ใน Visual Studio 2013


201

ฉันกำลังใช้งานฟีเจอร์ล่าสุดที่แนะนำใน C # 6.0 และเพิ่งตามตัวอย่างของคุณสมบัติเริ่มต้นอัตโนมัติ

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

แต่ IDE ของฉันไม่รู้จักไวยากรณ์

ฉันสงสัยว่าฉันจะเปิดใช้งาน C # 6.0 ใน Visual Studio 2013 ได้อย่างไรกรอบเป้าหมายที่ฉันใช้คือ 4.5.1


7
ฉันไม่เชื่อว่าเป็นไปได้ในปี 2013 ลองดู VS 14 CTP แทนหรือดูตัวอย่าง VS 2015
Jeroen Vannevel

คุณต้องการคอมไพเลอร์ล่าสุดซึ่งไม่ได้เป็นส่วนหนึ่งของ VS 2013 ดังนั้นฉันไม่คิดว่าเป็นไปได้
รูฟัส L

2
ดีฉันเพียงแค่ต้องการที่จะหาว่า MS ออกโปรแกรมปรับปรุงใด ๆ หรือไม่
Hassaan

1
@PauloMorgado 'นั่น' หมายถึงอะไรใน "รุ่นนั้นล้าสมัย"? 4.5.1, VS2013 หรือ VS2014CTP
ProfK

2
คุณช่วยอัพเดทคำตอบสำหรับคำถามนี้เป็น @Deef
Chris Marisic

คำตอบ:


64

ข้อมูลสำหรับซอฟต์แวร์ก่อนวางจำหน่ายที่ล้าสมัย:

ตามนี้มันเป็นเพียงการติดตั้งและไปสำหรับ Visual Studio 2013:

ในความเป็นจริงการติดตั้งคอมไพเลอร์ C # 6.0 จากรีลีสนี้เกี่ยวข้องกับการติดตั้งส่วนขยาย Visual Studio 2013 เพียงเล็กน้อยซึ่งจะอัพเดตไฟล์เป้าหมาย MSBuild

ดังนั้นเพียงแค่รับไฟล์จากhttps://github.com/dotnet/roslynและคุณพร้อมที่จะไป

คุณต้องรู้ว่ามันเป็นรุ่นที่ล้าสมัยของข้อมูลจำเพาะที่นำมาใช้เนื่องจากพวกเขาไม่ได้ปรับปรุงแพ็คเกจสำหรับ Visual Studio 2013 อีกต่อไป :

นอกจากนี้คุณยังสามารถลองดูตัวอย่างผู้ใช้ปลายทางของเดือนเมษายนซึ่งติดตั้งที่ด้านบนของ Visual Studio 2013 (หมายเหตุ: ตัวอย่าง VS 2013 นี้ค่อนข้างล้าสมัยและไม่มีการอัปเดตอีกต่อไป)

ดังนั้นหากคุณไม่ต้องการที่จะใช้รุ่นล่าสุดคุณต้องดาวน์โหลดVisual Studio 2015


7
โชคไม่ดีที่ภาพตัวอย่างผู้ใช้สำหรับ vs 2013 ถูกปิดแล้ว :(
Hassaan

4
เพียงเพื่อให้แน่ใจว่าไม่มีวิธีการเขียนใน C # 6 ที่รองรับ VS 2013 หรือไม่ ฉันต้องใช้ VS 2015 หรือไม่
vorou

2
ถูกต้อง. @vorou ​​ไม่มีรุ่นตัวอย่างล่าสุดสำหรับ VS 2013
Patrick Hofman

5
ที่จริงแล้วนี่เป็นวิธีหนึ่ง (ดูคำตอบของฉัน) แต่มันแตกต่างจากสิ่งที่คุณสามารถทำได้หลายเดือนที่ผ่านมาก่อนการเปิดตัวครั้งสุดท้าย
David De Sloovere

1
ไม่มีวิธีแก้ปัญหาในหัวข้อนี้หรือหัวข้ออื่นที่คล้ายคลึงกันช่วยฉันได้ ดังนั้นสิ่งเดียวที่ต้องทำคือย้ายไปที่ VS 2015 ฉันเดา
Yar

177

ภายใต้ VS2013 คุณสามารถติดตั้งคอมไพเลอร์ใหม่ลงในโครงการเป็นแพคเกจ nuget ด้วยวิธีนี้คุณไม่จำเป็นต้องมี VS2015 หรือเซิร์ฟเวอร์บิลด์ที่อัปเดต

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

Install-Package Microsoft.Net.Compilers

แพ็คเกจอนุญาตให้คุณใช้ / สร้างรหัส C # 6.0 / ไวยากรณ์ เพราะ VS2013 ไม่รู้จักกำเนิดใหม่ไวยากรณ์ C # 6.0 ก็จะแสดงข้อผิดพลาดในหน้าต่างแก้ไขรหัสแม้ว่ามันจะสร้างความดี

การใช้ Resharper คุณจะได้รับเส้นอย่างสั้น ๆ ในคุณสมบัติ C # 6 แต่หลอดไฟให้ตัวเลือกในการ 'เปิดใช้งานการสนับสนุน C # 6.0 สำหรับโครงการนี้' (การตั้งค่าที่บันทึกไว้ใน. การตั้งค่า)

ตามที่กล่าวไว้โดย @ stimpy77: สำหรับการสนับสนุนในมุมมอง MVC Razorคุณจะต้องมีแพ็คเกจเพิ่มเติม(สำหรับผู้ที่ไม่ได้อ่านความคิดเห็น)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

หากคุณต้องการการสนับสนุนแบบเต็ม C # 6.0 คุณจะต้องติดตั้ง VS2015


8
ตัวสร้างหลักถูกลบออกจริงจากรุ่นสุดท้าย นั่นเป็นเหตุผลที่พวกเขาไม่ทำงาน
Mark A. Donohoe

8
เพียงแค่ต้องการชี้ให้เห็นสำหรับทุกคนที่ต้องการใช้ C # 6 ในมีดโกนในโครงการ MVC5 ดูเหมือนว่าเป็นแพ็คเกจ NuGet แยกต่างหากและจำเป็นแม้ว่าคุณจะใช้ VS2015 ดูstackoverflow.com/a/30832849/11398
Jon Davis

2
มันใช้งานได้ (อย่างที่คุณสามารถคอมไพล์) อย่างไรก็ตาม VS2013 ยังคงแสดงข้อผิดพลาด: stackoverflow.com/questions/35796001/…
mnwsmit

2
เขาเขาเขา นี่มันเท่ห์ คอมไพเลอร์แสดงข้อผิดพลาดล่วงหน้า แต่คอมไพล์สำเร็จเมื่อคอมไพล์จริง ช่างเป็นแฮ็คที่จะเริ่มต้นเช้าวันหยุด!
RBT

1
มันจะแสดงข้อผิดพลาดในหน้าต่างแก้ไขรหัสแม้ว่ามันจะสร้างได้ดี เพิ่งรู้สึกว่าจำเป็นต้องชี้อีกครั้ง คำตอบที่ดี!
meJustAndrew

5

คำตอบมากมายที่นี่เขียนขึ้นก่อนRoslyn (คอมไพเลอร์. NET C # และ VB แบบโอเพ่นซอร์ส) ย้ายไปที่. NET 4.6 ดังนั้นพวกเขาจะไม่ช่วยคุณหากโครงการเป้าหมายของคุณพูดว่า 4.5.2 ตามที่ฉันทำ (สืบทอดมาและไม่สามารถเปลี่ยนแปลงได้)

แต่คุณสามารถคว้าRoslynรุ่นก่อนหน้าได้จากhttps://www.nuget.org/packages/Microsoft.Net.Compilersและติดตั้งแทนเวอร์ชันล่าสุด ฉันใช้ 1.3.2 (ฉันลอง 2.0.1 - ซึ่งดูเหมือนจะเป็นรุ่นล่าสุดที่ทำงานบน. NET 4.5 - แต่ฉันไม่สามารถรวบรวมมันได้) เรียกใช้สิ่งนี้จากคอนโซล Package Manager ใน VS 2013:

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

จากนั้นเริ่ม Visual Studio ใหม่ ตอนแรกฉันมีปัญหาสองอย่าง คุณต้องตั้งค่าเวอร์ชัน C # กลับไปเป็นค่าเริ่มต้น (C # 6.0 ไม่ปรากฏในรายการรุ่น แต่ดูเหมือนว่าจะเป็นค่าเริ่มต้น) จากนั้นล้างบันทึกบันทึกรีสตาร์ท VS และคอมไพล์ใหม่

น่าสนใจฉันไม่มีข้อผิดพลาด IntelliSense เนื่องจากคุณสมบัติ C # 6.0 ที่ใช้ในรหัส (ซึ่งเป็นสาเหตุของการต้องการ C # 6.0 ตั้งแต่แรก)

* รุ่น 2.0.1 เกิดข้อผิดพลาดงาน "Microsoft.CodeAnalysis.BuildTasks.Csc ไม่สามารถโหลดจากชุดประกอบ Microsoft.Build.Tasks.CodeAnalysis.dll ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'Microsoft.Build.Utilities.Core, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'หรือการอ้างอิงอย่างใดอย่างหนึ่งระบบไม่พบไฟล์ที่ระบุยืนยันว่าการประกาศนั้นถูกต้องว่าแอสเซมบลีและการอ้างอิงทั้งหมดมีอยู่และงานนั้นมี คลาสสาธารณะที่ใช้ Microsoft.Build.Framework.ITask

อัปเดตสิ่งหนึ่งที่ฉันสังเกตเห็นตั้งแต่โพสต์คำตอบนี้คือถ้าคุณเปลี่ยนรหัสใด ๆ ในระหว่างการดีบัก ("แก้ไขและดำเนินการต่อ") คุณจะพบว่ารหัส C # 6.0 ของคุณจะแสดงเป็นข้อผิดพลาดในสิ่งที่ดูเหมือนจะย้อนกลับไป สภาพแวดล้อม pre-C # 6.0 สิ่งนี้ต้องการการรีสตาร์ทเซสชันการดีบักของคุณ น่ารำคาญมากโดยเฉพาะกับเว็บแอปพลิเคชัน


@RichBianco เยี่ยมมาก - ขอบคุณสำหรับความคิดเห็นและการโหวต โดยส่วนตัวฉันไม่เข้าใจว่าทำไม v2.0.1 ใช้งานไม่ได้ หากใครมีเบาะแสเกี่ยวกับเรื่องนี้ - เช่นเดียวกับในการกำจัดข้อผิดพลาดที่ฉันรายงาน - โปรดโพสต์การแก้ไขของคุณ
SteveCinq

4

เป็นมูลค่าการกล่าวขวัญว่าเวลาสร้างจะเพิ่มขึ้นสำหรับผู้ใช้ VS 2015 หลังจาก :

Install-Package Microsoft.Net.Compilers

ผู้ที่ใช้ VS 2015 และต้องเก็บแพ็คเกจนี้ไว้ในโครงการของพวกเขาสามารถแก้ไขเวลาสร้างที่เพิ่มขึ้นได้

แก้ไขไฟล์ packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.propsและทำความสะอาด ไฟล์ควรมีลักษณะดังนี้:

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

การทำเช่นนั้นบังคับให้สร้างโปรเจ็กต์เหมือนก่อนเพิ่มMicrosoft.Net.Compilersแพ็กเกจ


2

เป็นไปได้ที่จะใช้คุณสมบัติ C # 6.0 เต็มรูปแบบใน Visual Studio 2013 หากคุณมี Resharper
คุณต้องเปิดใช้งาน Resharper Build and voilá! ในตัวเลือก Resharper -> Build - เปิดใช้งาน Resharper Build และใน "ใช้รุ่น MSBuild.exe" เลือก "ติดตั้งล่าสุด"

วิธีนี้ Resharper จะสร้างโครงการ C # 6.0 ของคุณและจะไม่ขีดเส้นใต้รหัส C # 6.0 เป็นไม่ถูกต้อง

ฉันใช้สิ่งนี้ด้วยเช่นกันแม้ว่าฉันจะมี Visual Studio 2015 เพราะ:

  1. การทดสอบหน่วยใน Resharper ไม่ทำงานกับฉันด้วย Visual Studio 2015 ด้วยเหตุผลบางอย่าง
  2. VS 2015 ใช้หน่วยความจำมากกว่า VS 2013 มาก

ฉันกำลังวางสิ่งนี้ไว้ที่นี่เพราะฉันกำลังมองหาวิธีแก้ปัญหานี้มาระยะหนึ่งแล้วบางทีมันอาจช่วยคนอื่นได้


-1

ดูเหมือนว่ามีบางคนเข้าใจผิด ดังนั้นแทนที่จะพยายามแก้ไข VS2013 ที่นี่และตอบจากคนที่แต่งตัวประหลาดของ Microsoft: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 60 ที่เคยได้รับการสนับสนุนโดย VS-2013 ฟอรั่ม = โรสลิน

ดังนั้นโปรดอ่านและติดตั้ง VS2015


1
ลิงค์นี้ให้ฉัน 'ไม่ได้รับอนุญาต' แม้หลังจากล็อกอิน MS แน่นอนว่าการติดตั้ง VS2015 หรือใหม่กว่านั้นคือค่าใช้จ่าย£ XXX, 000s ในการตั้งค่าบางอย่าง
Chris F Carroll
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.