Возможные решения, взятые из комментариев к публикации в блоге ScottGu (ищите на странице "8026"):
Предложение решения 1 (Дэвид Тейлор)
Добавьте эти элементы dom кода RTM в 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.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>
Затем добавьте файлы Roslyn и Microsoft.CodeDom.Providers. *. Dll в каталог BIN.
Его достаточно легко настроить, но мне было странно, что для него не был настроен шаблон по умолчанию, если вы выбрали .NET 4.6 при создании нового «веб-сайта» в VS 2015 RTM.
Предложение решения 2 (Мартин)
В дополнение к приведенному выше комментарию Дэвида Тейлора, похоже, что настройки system.codedom верны, когда веб-приложение создается с TargetFramework по умолчанию v4.5.2. Изменение TargetFramework на v4.6, по-видимому, приводит к изменению настроек компилятора для CSharp, что вызывает проблему.
Мои обходные пути были следующими:
- Файл / Новое / Веб-приложение ASP.NET
- Выберите шаблон «Веб-API» из шаблонов ASP.NET 4.5.2.
- Сделайте копию элемента system.codedom (и его содержимого) в web.config
- Используя Properties / TargetFramework, установите Target Framework на 4.6.
- Замените измененный элемент system.codedom в web.config копией, сделанной до изменения TargetFramework.
- Ударить F5
Домашняя страница должна загрузиться должным образом.
Для информации: содержимое system.codedom сразу после изменения TargetFramework на v4.6. было следующим (обратите внимание на использование типа "Microsoft.CSharp.CSharpCodeProvider"):
<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>