Как включить функцию C# 6.0 в Visual Studio 2013?

Я просматривал последние функции, представленные в C# 6.0, и просто следовал примеру инициализатора автоматического свойства,

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

но моя IDE не распознала синтаксис.

Мне интересно, как я мог бы включить C# 6.0 в Visual Studio 2013. Целевая среда, которую я использую, - это 4.5.1.

6 ответов

Решение

Информация для устаревшего пререлизного программного обеспечения:

В соответствии с этим это просто установка и переход на 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.

Под 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.

Многие ответы здесь были написаны до того, как 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. Это требует перезапуска сеанса отладки. ОЧЕНЬ раздражает, особенно для веб-приложений.

Стоит отметить, что время сборки будет увеличено для пользователей 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 пакет

Можно использовать полные функции 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.

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

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

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

Другие вопросы по тегам