Як увімкнути функцію 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, тому я не думаю, що це можливо.
Руфус Л

2
ну, я просто шукаю, щоб дізнатись, видає ли повідомлення будь-яке оновлення чи ні
Hassaan

1
@PauloMorgado Що означає "що" означає "ця версія застаріла"? 4.5.1, VS2013 або VS2014CTP?
ПрофК

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
на жаль, попередній перегляд кінцевого користувача до 2013 року закритий :(
Hassaan

4
Просто для переконання, що не існує підтримуваного способу запису на C # 6 за допомогою VS 2013? Чи потрібно використовувати VS 2015?
vorou

2
Це правильно. @vorou ​​Немає останньої версії попереднього перегляду для VS 2013.
Патрік Хофман

5
Власне, це спосіб (див. Мою відповідь). Але це інакше, ніж те, що ви могли зробити місяці тому до остаточного випуску.
Девід Де Слоувере

1
жодне з рішень у цій темі чи інших подібних темах мені не допомогло. тому єдина робота навколо переїзду до VS 2015, я думаю.
Яр

177

У рамках VS2013 ви можете встановити нові компілятори в проект у вигляді пакету нута . Таким чином, вам не потрібен 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 для цього проекту" (налаштування збережено у .DotSettings).

Як згадував @ stimpy77: для підтримки у видах MVC Razor вам знадобиться додатковий пакет (для тих, хто не читає коментарі)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Якщо ви хочете повну підтримку C # 6.0, вам потрібно буде встановити VS2015.


8
Первинні конструктори фактично були вилучені з остаточного випуску. Тому вони не працюють.
Марк А. Донохое

8
Просто хочу вказати на всіх, хто хоче використовувати C # 6 в Razor в проекті MVC5, схоже, це окремий пакет NuGet, і це потрібно, навіть якщо ви використовуєте VS2015. Дивіться stackoverflow.com/a/30832849/11398
Джон Девіс

2
Він працює (як ви можете скомпілювати), проте VS2013 все ще показує помилку: stackoverflow.com/questions/35796001 / ...
mnwsmit

2
he he he. Це було класно. Компілятор показує помилки заздалегідь, але успішно компілюється при фактичному компілюванні. Який хак починати вранці у вихідні!
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 - але я не міг змусити її компілювати *.) Запустіть це з консолі диспетчера пакунків у 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, культура = нейтральна, PublicKeyToken = b03f5f7f11d50a3a 'або одна з її залежностей. Система не може знайти вказаний файл. Підтвердьте, що декларація правильна, що збірка та всі її залежності доступні, і що завдання містить a публічний клас, який реалізує Microsoft.Build.Framework.ITask.

ОНОВЛЕННЯ Одне, що я помітив після публікації цієї відповіді, це те, що якщо ви зміните будь-який код під час налагодження ("Редагувати та продовжити"), вам сподобається, що ваш код C # 6.0 раптом виявиться як помилки в тому, що, здається, повертається до середовище до 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 і voilá! У параметрах Resharper -> Build - увімкніть програму Resharper і у "Використовуйте версію 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-коли-небудь буде підтримуватися від-в-2013? Форум = Рослин

Тому, будь ласка, прочитайте його та встановіть VS2015.


1
посилання дає мені "не авторизовано" навіть після входу мс. Звичайно, встановлення VS2015 або новішої версії - це £ XXX, 000 000 витрат у деяких налаштуваннях.
Кріс Ф Керролл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.