Функции C# 6.0 не работают с Visual Studio 2015
Я тестирую Visual Studio 2015 С C# 6.0, но языковые функции не работают. В веб-приложении MVC компилируется следующий код:
if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName))
{
// More logic here...
}
однако, когда я запускаю приложение через Debug и IIS Express, я получаю следующую ошибку:
CS1525: недопустимый термин выражения '.-
Как включить эти функции?
7 ответов:
это работает в MVC 5 (проверено 5.2.3), вам просто нужно добавить пакет roslyn code dom Nuget
поставщики CodeDOM для компилятора .NET...
замена поставщиков CodeDOM, которые используют новую платформу компилятора .NET ("Roslyn") компилятор в качестве API службы. Это обеспечивает поддержку новых языковых функций в системах, использующих CodeDOM (например ASP.NET компиляция во время выполнения), а также повышение производительности компиляции этих системный.
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
Ну, у меня есть MVC5 и недавно установлен против 2015 года.
Я установил пакет поставщиков CodeDOM, но это не помогло... Но после этого я понял, что пакет поддерживает только framework 4.5, в то время как у меня есть целевая платформа, установленная на 4.6 во время тестов - она работает с 4.5...
Так что обратите внимание также на целевой фреймворк. Если у вас есть 4.5 - просто установите пакет Microsoft.граф CodeDOM.Услуги поставщиков.DotNetCompilerPlatform. Но если у вас есть 4.5.1-4.6 в качестве мишени, вы будете иметь изменения в web.раздел конфигурации
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"> <providerOption name="CompilerVersion" value="v4.0"/> </compiler> <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=\"Web\" /optionInfer+"/> </compilers> </system.codedom>
на C#, просто измените тип to:
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
У меня была такая же проблема в Visual Studio 2015. Другой ответ здесь ссылался на решение, которое я использовал, но они неправильно указали исправление и никогда не давали разъяснений.
в меню Visual Studio выберите проект и вы должны увидеть подпункта включить C#6 / VB 14 если у вас возникли эти проблемы. Выберите этот подпункт меню. Он загрузит правильные пакеты из Nuget и установит их. После этого перезапустите Visual Studio и перезагрузите свое решение.
Я не могу проверить, будет ли это также исправить Свойства Проекта > Сборка > Дополнительно > Языковая Версия выбор C# 6, так что вы можете проверить это, а также после включения C# 6 из меню.
Проверьте свойства проекта, перейдите в build, advanced и посмотрите, есть ли C# 6.0, если у вас его нет по умолчанию.
В настоящее время существует идеальная поддержка MVC5 и C# 6.0 и работает удивительно хорошо!
в том числе следуя совету установки последней
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Я также должен был установить мой rootWeb.config
system.codedom
к этому, чтобы, наконец, получить все ошибки вVisual Studio 2015
уйти:<system.codedom> <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=\"Web\" /optionInfer+"/> </compilers> </system.codedom>
теперь перезапустите
Visual Studio
и это должно сделать это.
Visual Studio 2015 также покажет
Enable C#6 / VB 14
в меню проекта с помощью ASP.NET выбран веб-сайт / веб-приложение.это будет де-факто установить
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
иMicrosoft.Net.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=\"Web\" /optionInfer+" />