Можливі рішення, взяті з коментарів до публікації в блозі ScottGu (пошук "8026" на сторінці):
Пропозиція рішення 1 (Девід Тейлор)
Додайте ці елементи елемента 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>
Потім додайте матеріали dll Roslyn і Microsoft.CodeDom.Providers. *. У свій каталог 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
- За допомогою властивостей / TargetFramework встановіть цільову рамку на 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>