Как включить функцию 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.
Йерун Ванневель
Ну, вам нужен последний компилятор, который не является частью VS 2013, так что я не думаю, что это возможно.
Руфус Л
2
ну, я просто
хочу
1
@PauloMorgado Что означает «это» в «эта версия устарела»? 4.5.1, VS2013 или VS2014CTP?
ProfK
2
Не могли бы вы обновить ответ на этот вопрос на @Deef
Крис Марисич

Ответы:

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.
Патрик Хофман
5
На самом деле, это способ (см. Мой ответ). Но это отличается от того, что вы могли сделать несколько месяцев назад до финального релиза.
Дэвид Де Слововер
1
ни одно из решений в этой теме или других подобных темах не помогло мне. так что я думаю, единственное решение - перейти на VS 2015.
Яр
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 для этого проекта» (настройка сохранена в .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
хе хе хе Это было круто. Компилятор показывает ошибки заранее, но компилируется успешно при фактической компиляции. Какой взлом начать выходные в выходные!
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 'или одна из ее зависимостей. Система не может найти указанный файл. Убедитесь, что объявление правильное, что сборка и все ее зависимости доступны и что задача содержит открытый класс, который реализует Microsoft.Build.Framework.ITask.

ОБНОВЛЕНИЕ Одна вещь, которую я заметил после публикации этого ответа, заключается в том, что если вы измените какой-либо код во время отладки («Редактировать и продолжить»), вы обнаружите, что ваш код C # 6.0 внезапно будет отображаться как ошибки в том, что, кажется, возвращается среда до C # 6.0. Это требует перезапуска сеанса отладки. ОЧЕНЬ раздражает, особенно для веб-приложений.

SteveCinq
источник
@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 и вуаля! В Resharper Options -> 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.

Я помещаю это здесь, поскольку я искал решение этой проблемы в течение некоторого времени и, возможно, это поможет кому-то еще.

devdimi
источник
-1

Кажется, есть какое-то недопонимание. Итак, вместо того, чтобы пытаться исправить VS2013, вот и ответ от парня Microsoft: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 60-постоянно быть при поддержке, по-против-2013? форум = Рослин

Поэтому, пожалуйста, прочитайте его и установите VS2015.

Александр Христов
источник
1
ссылка дает мне «не авторизован» даже после MS входа в систему. Конечно, установка VS2015 или более поздней версии в некоторых настройках стоит £ XXX.
Крис Ф. Кэрролл