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


引言

眾所周知,無論是C#,還是java,都需要編譯,Java——通過 javac命令

javac test.java

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

/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開源項目,打開Visual Studio 2017, 咔嚓,居然編譯失敗,【錯誤】選項“8.0”對 /langversion 無效,然后改成了7.0,然后就報代碼中錯誤,查看了相關代碼,才明白,原來是作者用的是C#8.0的語法寫,而Visual Studio 2017包含的C#編譯器是以C#7.0為目標,說白了,不認識C#8.0

默認值

編譯器根據以下規則確定默認值:

目標框架 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版本

作者:Garfield

同步更新至個人博客:http://www.randyfield.cn/

本文版權歸作者所有,未經許可禁止轉載,否則保留追究法律責任的權利,若有需要請聯系287572291@qq.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM