新版本的 C# 特性需要新版本的 Visual Studio 的支持。不过,如果你不介意修改项目的话,你也能在低版本的 Visual Studio 中获得高版本的 C# 语言支持了。
而使用 Microsoft.Net.Compilers 这款 NuGet 包就可以做到。
Visual Studio 每一次的重大发布都带来新的 C# 版本(至少在 Visual Studio 2017 之前是这样),于是通常情况下如果你使用了旧版本的 Visual Studio,还打不开编写了新 C# 语法的项目呢!
你可以阅读另一篇文章了解不同 Visual Studio 版本原生带来的 C# 版本。
各个 C# 版本的主要特性、发布日期和发布方式(C# 1.0 - 7.3) - 吕毅
不过,伴随着 .NET Core 生态的崛起和 NuGet 的逐渐广泛的使用,微软发布了 Microsoft.Net.Compilers 来解决跨 Visual Studio 版本的 C# 语言版本兼容问题了。
Microsoft.Net.Compilers 首次发布于 2015 年 7 月。
官方对齐的描述是:
.NET Compilers package. Referencing this package will cause the project to be built using the specific version of the C# and Visual Basic compilers contained in the package, as opposed to any system installed version.
这是一个 .NET 的编译器包,无论你系统中安装的是什么版本的 C# 编译器,使用此包都可以强制项目使用某个特定版本的 C# 编译器。
Microsoft.Net.Compilers 对项目本身没有什么要求,但需要编译项目的计算机上安装有完整功能的 .NET Framework 4.6 及以上版本。
This package can be used to compile code targeting any platform, but can only be run using the desktop .NET 4.6+ Full Framework.
这是开发者计算机上的事情,不影响产品的 .NET Framework 版本需求。如果你连系统也比较旧,那么安装下最新版本的 .NET Framework 即可。
在你需要编写最新版本 C# 的项目中安装 NuGet 包 Microsoft.Net.Compilers。
就像普通的项目启用最新版 C# 语言一样,在你的项目的 csproj 的 PropertyGroup
中添加以下属性:
1 | <LangVersion>Latest</LangVersion> |
---|
如果不知道如何添加,可以阅读 VisualStudio 使用三个方法启动最新 C# 功能 - 林德熙。
你已经可以使用最新版本的 C# 了,而不用关心你本机安装的是哪个版本 —— 即便你是 Visual Studio 2013/2015。
1 2 3 4 5 6 7 8 9 | class Program { static async Task Main(string[] args) { Console.WriteLine("Thanks Walterlv!"); await Task.Delay(5000); Console.WriteLine("I got the latest C# version."); } } |
---|
参考资料
本文会经常更新,请阅读原文: https://blog.walterlv.com/post/add-lastest-csharp-support-for-old-visual-studio.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected]) 。