Các giải pháp khả thi, được lấy từ các nhận xét trên bài đăng trên blog của ScottGu (tìm kiếm "8026" trên trang):
Đề xuất giải pháp 1 (David Taylor)
Thêm các phần tử dom mã RTM này vào 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>
Sau đó thêm Roslyn và Microsoft.CodeDom.Providers. *. Dll vào thư mục BIN của bạn.
Nó đủ dễ dàng để thiết lập, nhưng thật kỳ lạ đối với tôi là mẫu mặc định không được thiết lập cho nó nếu bạn chọn .NET 4.6 khi tạo một "Trang web" mới trong VS 2015 RTM.
Đề xuất giải pháp 2 (Martin)
Ngoài nhận xét của David Taylor ở trên, có vẻ như cài đặt system.codedom là chính xác khi một Ứng dụng web được tạo với TargetFramework làm v4.5.2 mặc định. Thay đổi TargetFramework thành v4.6 dường như để sửa đổi cài đặt trình biên dịch cho CSharp, theo cách gây ra sự cố.
Cách giải quyết của tôi như sau:
- Tệp / Mới / Ứng dụng Web ASP.NET
- Chọn mẫu "API Web" từ Mẫu ASP.NET 4.5.2
- Sao chép phần tử system.codedom (và nội dung của nó) trong web.config
- Sử dụng Thuộc tính / TargetFramework, đặt Khung mục tiêu thành 4,6
- Thay thế phần tử system.codedom đã sửa đổi trong web.config bằng bản sao được chụp trước khi thay đổi TargetFramework
- Đánh F5
Trang chủ sẽ tải như mong đợi.
Để biết thông tin, nội dung system.codedom ngay sau khi thay đổi TargetFramework thành v4.6. như sau (lưu ý sử dụng Loại "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>