# 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=\"Web\" /optionInfer+"/> </compilers> </system.codedom> ``` Microsoft.CodeDom.Providers.DotNetCompilerPlatform 就是 Roslyn 編譯平台的組件,  用以回報程式碼的資訊給編輯器使用。 這也意味著,以後的 .NET Compiler 是可攜的,直接內建在專案內,事實上也是如此,你可以把專案的 \bin 目錄打開,可以找到一個 roslyn 目錄,所有編譯器以及需要的檔案都在裡面了。  ※ $ 字號 是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)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.