[Visual Studio]限制Visual Studio 2015開發時只能使用C# 5.0以前的語法

最近有一個特別的經驗,限制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

Roslyn C# Compiler