【平常排雷】C#8.0來了,可是Visual Studio 2017不認識!

引言

衆所周知,不管是C#,仍是java,都須要編譯,Java——經過 javac命令java

javac test.java

那麼C#有麼!?.net開發者都是對Visual Studio重度依賴(沒辦法!確實好用,智能提示,調試,宇宙第一的IDE不是光吹出來的),回答前面的問題:「C#也有呀,那就是csc.exe,可是大多數時候咱們並不須要接觸它,通常狀況下,它都直接跟着visual studio 走了」git

/out 指定編譯後程序的名稱,默認是跟文件的名稱相同
/target:exe 編譯後是一個控制檯應用程序 (默認)
/target:library 編譯成一個*.dll程序集
/target:winexe 建立GUI的應用程序
csc /targer:exe test.cs

之前仍是.NET Framework 時,csc.exe就符在SDK中C:\Windows\Microsoft.NET\Framework\v版本號,感興趣的能夠本身去改path試試。github

問題

上次同事,讓我幫忙在外網機上編譯一個github開源項目,打開Visual Studio 2017, 咔嚓,竟然編譯失敗,【錯誤】選項「8.0」對 /langversion 無效,而後改爲了7.0,而後就報代碼中錯誤,查看了相關代碼,才明白,原來是做者用的是C#8.0的語法寫,而Visual Studio 2017包含的C#編譯器是以C#7.0爲目標,說白了,不認識C#8.0shell

默認值

編譯器根據如下規則肯定默認值:app

目標框架 version C# 語言版本的默認值
.NET Core 3.x C# 8.0
.NET Core 2.x C# 7.3
.NET Standard 2.1 C# 8.0
.NET Standard 2.0 C# 7.3
.NET Standard 1.x C# 7.3
.NET Framework 所有 C# 7.3

手動設置語言版本

<PropertyGroup>
   <LangVersion>8.0</LangVersion>
</PropertyGroup>

解決問題

同事急等着用,手上只有VS2017,總不能去下載一個VS2019吧,公司網管找上門來揍我怎麼辦,OA估計都吵起來了,誰在下東西!?。幸虧如今有.net core,方便,沒錯,.net core3.0+是支持C#8.0的語法,那麼.net core 3.0+的sdk也能編譯C#8.0的項目了,而後下了sdk,120M,還能夠接受。 vscode打開項目框架

dotnet build //構建項目,下載依賴
dotnet publish -f netcoreapp3.1 //發佈3.0版本
dotnet publish -f net456 //發佈netframework4.5版本
相關文章
相關標籤/搜索