Làm cách nào để bật tính năng C # 6.0 trong Visual Studio 2013?


201

Tôi đã xem qua các tính năng mới nhất được giới thiệu trong C # 6.0 và chỉ theo một ví dụ về trình khởi tạo thuộc tính tự động,

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

nhưng IDE của tôi không nhận ra cú pháp.

Tôi tự hỏi làm thế nào tôi có thể kích hoạt C # 6.0 trong Visual Studio 2013. Khung mục tiêu tôi đang sử dụng là 4.5.1.


7
Tôi không tin là có thể vào năm 2013. Thay vào đó hãy xem xét VS 14 CTP hoặc bản xem trước VS 2015.
Jeroen Vannevel

Chà, bạn cần trình biên dịch mới nhất, không phải là một phần của VS 2013, vì vậy tôi không nghĩ điều đó là có thể.
Rufus L

2
tốt, tôi chỉ đang tìm hiểu xem ms có phát hành bản cập nhật nào hay không
Hassaan

1
@PauloMorgado 'Điều đó' có nghĩa là gì trong "phiên bản đó đã lỗi thời"? 4.5.1, VS2013 hay VS2014CTP?
ProfK

2
Bạn có thể vui lòng cập nhật câu trả lời cho câu hỏi này lên @Deef
Chris

Câu trả lời:


64

Thông tin cho phần mềm phát hành lỗi thời:

Theo đó, đây chỉ là bản cài đặt và sử dụng cho Visual Studio 2013:

Trên thực tế, việc cài đặt trình biên dịch C # 6.0 từ bản phát hành này liên quan nhiều hơn đến việc cài đặt tiện ích mở rộng Visual Studio 2013, từ đó cập nhật các tệp mục tiêu MSBuild.

Vì vậy, chỉ cần lấy các tệp từ https://github.com/dotnet/roslyn và bạn đã sẵn sàng để đi.

Bạn phải biết đây là phiên bản lỗi thời của thông số kỹ thuật được triển khai ở đó, vì chúng không còn cập nhật gói cho Visual Studio 2013 :

Bạn cũng có thể dùng thử Bản xem trước người dùng cuối của April, cài đặt trên đầu Visual Studio 2013. (lưu ý: bản xem trước VS 2013 này khá lỗi thời và không còn được cập nhật)

Vì vậy, nếu bạn muốn sử dụng phiên bản mới nhất, bạn phải tải xuống Visual Studio 2015 .


7
thật không may, bản xem trước của người dùng cuối cho năm 2013 đã bị đóng :(
Hassaan

4
Chỉ để đảm bảo, không có cách nào được hỗ trợ để viết trong C # 6 bằng cách sử dụng VS 2013? Tôi có phải sử dụng VS 2015 không?
vorou ​​21/07/2015

2
Đúng rồi. @vorou ​​Không có phiên bản xem trước gần đây cho VS 2013.
Patrick Hofman

5
Trên thực tế, đây là một cách (xem câu trả lời của tôi). Nhưng nó khác với những gì bạn có thể làm vài tháng trước khi phát hành cuối cùng.
David De Sloovere

1
không có giải pháp nào trong chủ đề này hoặc các chủ đề tương tự khác giúp tôi. Vì vậy, công việc duy nhất xung quanh là chuyển sang VS 2015 tôi đoán.
Yar

177

Trong VS2013, bạn có thể cài đặt trình biên dịch mới vào dự án dưới dạng gói nuget . Bằng cách đó, bạn không cần VS2015 hoặc máy chủ xây dựng được cập nhật.

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

Install-Package Microsoft.Net.Compilers

Gói cho phép bạn sử dụng / xây dựng mã / cú pháp C # 6.0. Vì VS2013 không nhận ra cú pháp C # 6.0 mới, nên nó sẽ hiển thị các lỗi trong cửa sổ soạn thảo mã mặc dù nó sẽ xây dựng tốt .

Sử dụng Resharper, bạn sẽ nhận được các dòng nguệch ngoạc trên các tính năng của C # 6, nhưng bóng đèn cung cấp cho bạn tùy chọn 'Kích hoạt hỗ trợ C # 6.0 cho dự án này' (cài đặt được lưu vào .DotS Settings).

Như được đề cập bởi @ activpy77: để được hỗ trợ trong các chế độ xem MVC Dao cạo, bạn sẽ cần một gói bổ sung (đối với những người không đọc các bình luận)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Nếu bạn muốn hỗ trợ đầy đủ C # 6.0, bạn sẽ cần cài đặt VS2015.


8
Các nhà xây dựng chính đã thực sự bị xóa khỏi bản phát hành cuối cùng. Đó là lý do tại sao họ không làm việc.
Đánh dấu A. Donohoe

8
Chỉ muốn chỉ ra cho bất kỳ ai muốn sử dụng C # 6 trong Dao cạo trong dự án MVC5, có vẻ như đó là gói NuGet riêng biệt và được yêu cầu ngay cả khi bạn đang sử dụng VS2015. Xem stackoverflow.com/a/30832849/11398
Jon Davis

2
Nó hoạt động (như bạn có thể biên dịch), tuy nhiên VS2013 vẫn hiển thị các lỗi: stackoverflow.com/questions353796001/iêu
mnwsmit

2
anh ấy anh ấy Điều này thật tuyệt. Trình biên dịch hiển thị lỗi trước nhưng biên dịch thành công khi thực sự biên dịch. Thật là một hack để bắt đầu một buổi sáng cuối tuần!
RBT

1
nó sẽ hiển thị lỗi trong cửa sổ soạn thảo mã mặc dù nó sẽ xây dựng tốt. Chỉ cần cảm thấy cần phải chỉ ra một lần nữa. Câu trả lời chính xác!
meJustAndrew

5

Rất nhiều câu trả lời ở đây đã được viết trước khi Roslyn (trình biên dịch .NET C # và VB mã nguồn mở) chuyển sang .NET 4.6. Vì vậy, họ sẽ không giúp bạn nếu mục tiêu dự án của bạn, giả sử, 4.5.2 như của tôi đã làm (kế thừa và không thể thay đổi).

Nhưng bạn có thể lấy phiên bản trước của Roslyn từ https://www.nuget.org/packages/Microsoft.Net.Compilers và cài đặt phiên bản đó thay vì phiên bản mới nhất. Tôi đã sử dụng 1.3.2. (Tôi đã thử 2.0.1 - dường như là phiên bản cuối cùng chạy trên .NET 4.5 - nhưng tôi không thể biên dịch nó *.) Chạy nó từ bảng điều khiển Trình quản lý gói trong VS 2013:

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

Sau đó khởi động lại Visual Studio. Tôi đã có một vài vấn đề ban đầu; bạn cần đặt phiên bản C # trở về mặc định (C # 6.0 không xuất hiện trong danh sách phiên bản nhưng dường như đã được đặt mặc định), sau đó xóa, lưu, khởi động lại VS và biên dịch lại.

Thật thú vị, tôi không có bất kỳ lỗi IntelliSense nào do các tính năng C # 6.0 được sử dụng trong mã (đó là lý do muốn có C # 6.0 ở vị trí đầu tiên).

* phiên bản 2.0.1 đã ném lỗi "Không thể tải tác vụ" Microsoft.CodeAnalysis.BuildT task.Csc từ tập hợp Microsoft.Build.T nhiệm.CodeAnalysis.dll. Không thể tải tệp hoặc lắp ráp 'Microsoft.Build.Utilities.Core, Phiên bản = 14.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a3a 'hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy tệp được chỉ định. Xác nhận rằng khai báo là chính xác, rằng hội đồng và tất cả các phụ thuộc của nó đều khả dụng và tác vụ có chứa một lớp công khai thực hiện Microsoft.Build.Framework.ITask.

CẬP NHẬT Một điều tôi nhận thấy kể từ khi đăng câu trả lời này là nếu bạn thay đổi bất kỳ mã nào trong quá trình gỡ lỗi ("Chỉnh sửa và tiếp tục"), bạn sẽ thấy rằng mã C # 6.0 của bạn sẽ đột nhiên hiển thị là lỗi trong những gì dường như trở lại môi trường tiền C # 6.0. Điều này đòi hỏi phải khởi động lại phiên gỡ lỗi của bạn. RẤT khó chịu đặc biệt là cho các ứng dụng web.


@RichBianco Thật tuyệt - cảm ơn vì đã phản hồi và bình chọn. Cá nhân, tôi không thể hiểu tại sao v2.0.1 không hoạt động. Nếu bất cứ ai có bất kỳ manh mối nào về việc này - như trong, loại bỏ lỗi tôi đã báo cáo - vui lòng gửi bản sửa lỗi của bạn.
SteveCinq

4

Điều đáng nói là thời gian xây dựng sẽ được tăng lên cho người dùng VS 2015 sau :

Install-Package Microsoft.Net.Compilers

Những người đang sử dụng VS 2015 và phải giữ gói này trong các dự án của họ có thể khắc phục thời gian xây dựng tăng lên .

Chỉnh sửa tập tin packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.propsvà làm sạch nó. Các tập tin sẽ trông như:

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

Làm như vậy buộc một dự án phải được xây dựng như trước khi thêm Microsoft.Net.Compilersgói


2

Có thể sử dụng đầy đủ các tính năng C # 6.0 trong Visual Studio 2013 nếu bạn có Resharper.
Bạn phải kích hoạt Resharper Build và voilá! Trong Tùy chọn chia sẻ lại -> Xây dựng - bật Resharper Build và trong "Sử dụng phiên bản MSBuild.exe", chọn "Đã cài đặt mới nhất"

Bằng cách này, Resharper sẽ xây dựng Dự án C # 6.0 của bạn và cũng sẽ không gạch dưới mã C # 6.0 là không hợp lệ.

Tôi cũng đang sử dụng điều này mặc dù tôi có Visual Studio 2015 vì:

  1. Các thử nghiệm đơn vị trong Resharper không hoạt động với tôi với Visual Studio 2015 vì một số lý do
  2. VS 2015 sử dụng nhiều bộ nhớ hơn so với VS 2013.

Tôi đang đặt vấn đề này ở đây, vì tôi đang tìm kiếm một giải pháp cho vấn đề này một thời gian và có lẽ nó sẽ giúp được người khác.


-1

Có vẻ như có một số hiểu lầm. Vì vậy, thay vì cố gắng vá VS2013 tại đây và trả lời từ một anh chàng Microsoft: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 60-ever-be-support-by-vs-2013? Forum = roslyn

Vì vậy, xin vui lòng, đọc nó và cài đặt VS2015.


1
liên kết cho tôi 'không được ủy quyền' ngay cả sau khi đăng nhập ms. Tất nhiên, cài đặt VS2015 trở lên là chi phí £ XXX, 000 trong một số cài đặt.
Chris F Carroll
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.