Possibili soluzioni, tratte dai commenti al post sul blog di ScottGu (cercare "8026" nella pagina):
Suggerimento di soluzione 1 (David Taylor)
Aggiungi questi elementi dom codice RTM a 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>
Quindi aggiungi Roslyn e Microsoft.CodeDom.Providers. *. Dll nella tua directory BIN.
È abbastanza facile da configurare, ma mi è sembrato strano che il modello predefinito non fosse impostato se si seleziona .NET 4.6 durante la creazione di un nuovo "sito Web" in VS 2015 RTM.
Suggerimento di soluzione 2 (Martin)
In seguito al commento di David Taylor sopra, sembra che le impostazioni di system.codedom siano corrette quando un'app Web viene creata con TargetFramework come v4.5.2 predefinito. La modifica di TargetFramework in v4.6 sembra modificare le impostazioni del compilatore per CSharp, in un modo che causa un problema.
La mia soluzione alternativa era la seguente:
- File / Nuovo / Applicazione Web ASP.NET
- Selezionare il modello "API Web" da modelli ASP.NET 4.5.2
- Prendi una copia dell'elemento system.codedom (e dei suoi contenuti) in web.config
- Utilizzando Properties / TargetFramework, impostare il Framework di destinazione su 4.6
- Sostituisci l'elemento system.codedom modificato in web.config con la copia presa prima di modificare TargetFramework
- Colpire F5
La home page dovrebbe caricarsi come previsto.
Per informazioni, il contenuto di system.codedom subito dopo aver modificato TargetFramework in v4.6. era il seguente (notare l'uso del tipo "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>