Как отключить поддержку С# 6 в Visual Studio 2015?

Фон

У нас есть проект, который мы разрабатываем в VS 2015 с включенным С# 6, который иногда должен быть открыт разработчиками, использующими VS 2013 без С# 6.

Мы не намерены использовать С# 6 в этом конкретном решении (насколько мне бы хотелось).

Проблема

Visual Studio и ReSharper предлагают полезные конструкторы языка С# 6, которые делают решение неработоспособным в более ранних версиях Visual Studio без поддержки С# 6.

Я отключил поддержку ReSharper С# 6, но я не могу отключить/ограничить возможности С# во всем решении.

Вопрос

Как ограничить возможности С# до С# 5 в рамках решения или в Visual Studio 2015?

Ответ 1

Вы можете установить функцию языка для каждого проекта отдельно, перейдя в Properties => Build tab => Advanced button => Language Version и установите предпочтительную версию.

Вы должны понимать, что он все равно будет использовать новую платформу компилятора С# 6.0. (под кодовым названием Roslyn). Тем не менее, этот компилятор будет имитировать поведение старых компиляторов и ограничит вас функциями, доступными только на этой конкретной языковой версии.


Я не думаю, что есть доступная настройка решения.

Ответ 2

добавить ниже в .sln.DotSettings следует отключить его на уровне решения

<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>

Или, если у вас нет файла .sln.DotSettings:

  • Если ваш файл решения называется Apple.sln, создайте файл рядом с ним под названием Apple.sln.DotSettings.

  • Дайте ему следующее содержание:

    <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
    </wpf:ResourceDictionary>
    
  • Закройте и снова откройте решение, Resharper должен только предупредить вас о вещах С# 5.

  • Не забудьте удалить это, когда вы в конечном итоге начнете использовать функции С# 6!:)

Ответ 3

Щелкните правой кнопкой мыши Project в Project Explorer и выберите "Свойства".

Когда откроется вкладка "Свойства", выберите "Сборка" и нажмите кнопку "Advance" внизу справа.

Появится раскрывающийся список Language Version. Измените выбор на "С# 5.0"

Ответ 4

Вы можете установить язык для всех solutions/csproj с помощью MSBuildUserExtensionsPath.

Найдите значение $(MSBuildUserExtensionsPath), оно должно быть чем-то вроде C:\Users\$(User)\AppData\Local\Microsoft\MSBuild

Затем отредактируйте файл Force.LangVersion.ImportBefore.props в папке $(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore с помощью:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LangVersion>5</LangVersion>
  </PropertyGroup>
</Project>

Ответ 6

Шаги уже написаны выше, просто добавив снимок экрана моего VS2015:

Свойства проекта → Сборка → Дополнительно → Языковая версия

введите описание изображения здесь

Я установил это на С# 5.0.