Подтвердить что ты не робот

Как использовать механизм просмотра бритвы для использования С# 6.0

В настоящее время мой механизм просмотра бритвы бросает и ошибочно говорит "Пожалуйста, используйте язык версии 6 или выше". Это может быть просто resharper, дающий мне указатель. Но как я могу использовать бритву С# 6.0. Остальное мое решение в файлах cs я могу использовать все новые возможности версии 7.

4b9b3361

Ответ 1

Я полагаю, что это связано с ошибкой в ​​шаблонах для web.config, когда проект обновлен до более новой версии .NET Framework.

Я смог исправить это, перейдя к web.config, найдя system.codedom node и изменив содержимое, чтобы выглядеть так:

<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>

Ответ 2

Если вы запускаете это из проекта 4.5.1, обновление до 4.5.2 может исправить его.

В противном случае рекомендуется установить этот пакет NuGet для обеспечения новых функциональных возможностей: Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Итак, сделаем что-то вроде этого:

<p>@Model.Person?.Name</p>

Может работать. Если это не так, попробуйте быть явным следующим образом:

<p>@(Model.Person?.Name)</p>

Ответ 3

Лучшие пошаговые инструкции, которые я смог найти для включения функций С# 6 в шаблонах RazorEngine, находятся здесь: https://github.com/Antaris/RazorEngine/issues/363#issuecomment-273106183 p >

Что не упомянуто в том, чтобы убедиться, что при добавлении раздела компиляторов в ваш app.config номер версии соответствует версии из устанавливаемого вами пакета. В комментарии это была версия 1.0.3, но у меня был установлен пакет 1.0.4, поэтому он должен выглядеть следующим образом:

<system.codedom>
<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
</compilers>

Ответ 4

Другие ответы неплохие, но я нашел хорошую и короткую статью, в которой окончательно проясняются этапы этой проблемы: https://cpratt.co/using-csharp-6-or-7-with-mvc-5/

Короче:

  • В консоли диспетчера пакетов установите Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

  • checka/изменяет ваш Web.config со следующими строками в конце:

<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:15 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> </compilers> </system.codedom>