# Razor Page (.cshtml) 怎麼使用 C# 6.0↑ 語法 ###### tags: `Learning` ## 前言 cshtml通常只支援到C# 5.0 自 .NET 4.5.2 開始,因應 .NET Core 與跨平台的開發,C# 的編譯器悄悄的由 .NET Framework 大包中移出來了,首先是一個叫做 Microsoft Build Tools 的東西,能不用安裝大包的 Microsoft .NET Framework SDK 就能編譯 C# 與 Visual Basic .NET 等 Managed Language 所開發的程式,隨後在 2014 年時,微軟宣布了 Roslyn 計畫,重新打造 C# 與 Visual Basic 的編譯器,以作為新一代 C#/VB 的編譯平台,Visual Studio 2015 以及隨後的版本有很多與語言相關的功能都和 Roslyn 有關。 Roslyn 編譯平台隨後正名為 Microsoft .NET Compiler Platform,並開源在 GitHub,第一個版本隨著 Visual Studio 2015 一起出來,並且直接內建於 Web 專案範本,使用 Visual Studio 2015 新增的 ASP.NET 專案,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.3.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.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/> </compilers> </system.codedom> ``` Microsoft.CodeDom.Providers.DotNetCompilerPlatform 就是 Roslyn 編譯平台的組件, ![](https://i.imgur.com/IcEfUoi.png) 用以回報程式碼的資訊給編輯器使用。 這也意味著,以後的 .NET Compiler 是可攜的,直接內建在專案內,事實上也是如此,你可以把專案的 \bin 目錄打開,可以找到一個 roslyn 目錄,所有編譯器以及需要的檔案都在裡面了。 ![](https://i.imgur.com/3rXWz3M.png) ※ $ 字號 是C#6.0的語法糖 [參考-ASP.NET MVC 5 專案如何使用 C# 6.0 進行開發](https://blog.miniasp.com/post/2015/07/29/Using-CSharp-60-in-ASPNET-MVC-5) [參考-[C#] C# 7 不能編譯? 其實是 Microsoft.Net.Compilers 版本問題](https://dotblogs.com.tw/regionbbs/2017/03/30/vs2017-cs7-compiler-issue)