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



фон

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

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

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

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

вопрос

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

6   134  

6 ответа:

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

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


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

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

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

или если у вас нет .sln.DotSettings file:

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

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

    <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>
    
  3. закройте и снова откройте решение, Resharper должен только предупредить вас о C#5 вещи.

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

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

поиск значения $(MSBuildUserExtensionsPath), это должно быть что-то вроде C:\Users$(User)\AppData\Local\Microsoft\MSBuild

затем отредактируйте файл Force.LangVersion.ImportBefore.props в папке $(MSBuildUserExtensionsPath).0\Imports\Microsoft.Common.Props\ImportBefore С :

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

этой инструмент Я написал, может помочь вам, если у вас есть много проектов, которые вы должны установить LangVersion для.

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

свойства проекта > > сборка > > дополнительно > > Языковая версия

enter image description here

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

щелкните правой кнопкой мыши проект в Обозревателе проектов и выберите Свойства.

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

есть выпадающее окно под названием Языковая версия. Изменить выбор на "C# 5.0"