Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 為現任微軟最有價值專家 (MVP)、微軟認證講師 (MCT) 、Blogger、Youtuber:記錄軟體開發的點點滴滴 著重於微軟技術、C#、ASP .NET、Azure、DevOps、Docker、AI、Chatbot、Data Science

[Visual Studio]如何在Visual Studio 2015使用C#7的功能?

2017-03-28 Tuesday

隨著Visual Studio 2017發佈之後,C# 7也同時發佈了。

C# 7 和 C# 6一樣,帶來都是比較偏幫助開發的時候寫起來更加簡潔的一些寫法,因此很容易就會想要使用來增加易讀性。

這個時候如果團隊使用的Visual Studio版本不同,容易就會發生編譯問題,以Visual Studio 2015來說,在編譯C# 7 就會出錯,那是否就不能夠用了呢?

範例 - out 參數

當我們需要呼叫方法的參數會回傳out的時候,通常來說都會需要先定義才能夠呼叫,例如:

int intValue;
int.TryParse("1", out intValue);
Console.WriteLine(intValue);

C# 7 有提供一種Syntax Sugar可以讓我們不用先定義參數,因此上面範例變成:

int.TryParse("1", out int intValue);
Console.WriteLine(intValue);

問題

使用C# 7的out參數的確會讓整個寫起來變得更加簡潔,因此很容易就給他用下去了,但是當另外一個開發者使用Visual Studio 2015的時候就會出現編譯錯誤:

image
VS 2015編譯錯誤

解決方式

因為VS 2015並不了解C# 7的語法,因此VS 2015在build的時候會顯示錯誤。

但是實際上C# 7同C# 6一樣,只是使用roslyn compiler編譯過就好,因此其實可以透過安裝roslyn的compiler來讓VS 2015編譯過去。

因此,只需要在專案加上 nuget package:

Install-Package Microsoft.Net.Compilers

這個時候我們再看build結果:

image
build成功但是VS 2015還是顯示有錯

會注意到 雖然build成功但是VS 2015還是會顯示有錯誤

Visual Studio 2013編譯C# 6.0

其實VS 2013編譯C# 6也會有一樣的問題 - 也可以用同樣方式來解決。

結語

C# 7編譯上面差異只在於roslyn compiler,因此可以透過用安裝nuget方式安裝roslyn compiler達到在VS 2015也能編譯C# 7語法。

美中不足的地方是VS 2015上面還是會顯示有錯 - 這個目前沒有任何解法。

因此最好的開發體驗還是大家一起升級VS 2017是最好。


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
2017-03-28 Tuesday
comments powered by Disqus