最近有一個特別的經驗,限制Visual Studio 2015 開發時使用C# 5.0(含)以前的語法!
主要原因是客戶還在使用VS2013(C#5.0),近期也沒升級打算,但團隊成員工具已經升到VS2015(C# 6.0),身為廠商的只好自己把手綁起來,在這個案子中不要使用C# 6.0語法。
最近幾年的Visual Studio版本進化
C# 5.0從VS2012推出
C# 6.0(Roslyn)從VS2015
C# 7.0請見Visual Studio 2015 Preview 4
回到正題,本以為這種把手綁起來的工作應該很簡單,就是那個建置選項設定一下.NET Framework就搞定了,沒想到要多設一個小東西,來筆記!
1.首先新增一個TestCS6的Console專案
2.打開program.cs,新增一段使用C# 6.0 內插字串以及Auto屬性初始設定式的功能
class Program
{
static void Main(string[] args)
{
//String Interpolatin(內插字串) C# 6.0
person p = new person { Name = "Luis Alberto Suárez", DOB = new DateTime(1987, 1, 24) };
var name = $"ID={p.ID} , Name={p.Name} , DOB={p.DOB}";
Console.WriteLine(name);
}
}
public class person
{
//Auto屬性初始設定式
public Guid ID { get; } = Guid.NewGuid();
public string Name { get; set; }
public DateTime DOB { get; set; }
}
3.建置前觀察一下選項!
C#6 語法編譯成功!
Console執行結果:
4.將目標.NET Framework改為4.5
噹噹!
竟然可以編譯成功,紅蚯蚓咧~難道c#5已經預測好未來的發展了!驚!
Disable C# 6.0 In Visual Studio 2015 Project
原來我們少了一個語言版本的設定!
專案右鍵 > 屬性 > 建置(1) > 進階(2) > 語言版本(3)
專案檔可以注意到多了一個LangVersion,值為5
馬上出現紅色蚯蚓
程式碼內也有
錯誤清單視窗
好!在家寫的太開心,結果到客戶端就蚯蚓,動手改回舊寫法吧~
Enable C# 6.0 In Visual Studio 2013
如果還是想在VS2013 Complier C#6,可以透過Nuget下載Complier(Microsoft.Net.Compilers),雖然可以編譯,但還是會出現錯誤。
MVC Razor views 要多安裝Microsoft.CodeDom.Providers.DotNetCompilerPlatform
參考:
How to enable C# 6.0 feature in Visual Studio 2013?
Will C# 6.0 ever be supported by VS 2013?
Using Roslyn compiler with Visual Studio 2013