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

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

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

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

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

6 ответов


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

по данным этой это просто установка и переход на 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 views вам нужно дополнительный пакета (для тех, кто не читал комментарии)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Если вы хотите полную поддержку C# 6.0, вам нужно установить VS2015.


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


многие ответы здесь были написаны до Рослин (компиляторы .NET C# и VB с открытым исходным кодом) переход к .NET 4.6. Поэтому они не помогут вам, если ваш проект нацелен, скажем, на 4.5.2, как мой (унаследован и не может быть изменен).

но вы можете захватить предыдущую версию Рослин от 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.Строить.Задачи.CodeAnalysis.файл DLL. Не удалось загрузить файл или сборку 'Microsoft.Строить.Коммунальные услуги.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' или одна из его зависимостей. Система не может найти указанный файл. Подтвердите, что объявление правильно, что сборка и все ее зависимости доступны, и что задача содержит открытый класс, реализующий Microsoft.Строить.Рамки.ITask.

обновление одна вещь, которую я заметил с момента публикации этого ответа, заключается в том, что если вы измените любой код во время отладки ("редактировать и продолжать"), вам понравится, что ваш код C#6.0 внезапно отобразится как ошибки в том, что, похоже, вернется к среде pre-C#6.0. Для этого требуется перезапуск отладки сессия. Очень раздражает, особенно для веб-приложений.


можно использовать полные функции C# 6.0 в Visual Studio 2013, Если у вас есть Resharper.
Вы должны включить сборку Resharper и вуаля! В параметрах 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.

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


кажется, здесь какое-то недоразумение. Итак, вместо того, чтобы пытаться исправить 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

Итак, пожалуйста, прочитайте его и установите VS2015.