Как включить функцию 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, потому что:
- Модульные тесты в Resharper у меня почему-то не работают с Visual Studio 2015
- 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.