【C#】C#8.0来了,但是Visual Studio 2017不认识!
2018年11月12日微软在 MSDN 博客的 Building C# 8.0一文发表了新的 C# 8.0 即将发布的特性,但是Visual Studio 2017不认识他。
1.引言
众所周知,无论是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试试。
2.问题
上次同事,让我帮忙在外网机上编译一个github开源项目,打开Visual Studio 2017, 咔嚓,居然编译失败,【错误】选项“8.0”对 /langversion 无效,然后改成了7.0,然后就报代码中错误,查看了相关代码,才明白,原来是作者用的是C#8.0的语法写,而Visual Studio 2017包含的C#编译器是以C#7.0为目标,说白了,不认识C#8.0
2.1编译器默认值
编译器根据以下规则确定默认值:
目标框架 | 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 |
2.2手动设置语言版本
<PropertyGroup> <LangVersion>8.0</LangVersion> </PropertyGroup>
3.解决问题
同事急等着用,手上只有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/post/2020-01-05-cplusplus/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。