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