如何在Visual Studio 2017中使用C# 8?
如何在Visual Studio 2017中使用C# 8?
在Visual Studio 2017中,您可以使用Microsoft.Net.Compilers.Toolset代替Microsoft.Net.Compilers。这个包是为取代Microsoft.Net.Compilers(一个仅适用于Windows的包)和Microsoft.NETCore.Compilers而设计的。这些包现已被弃用,并将在将来被删除。
这个包需要MSBuild 15.0以及.NET Destkop 4.7.2或.NET Core 2.1。
这个包的版本如下所示:
- 版本3.0包含C# 8.0的预览(Visual Studio 2019版本16.0),但预览1使用的是2.11版本。
- 版本3.1包含C# 8.0的预览(Visual Studio 2019版本16.1)。
- 版本3.2包含C# 8.0的预览(Visual Studio 2019版本16.2)。
- 版本3.3包含C# 8.0(Visual Studio 2019版本16.3,.NET Core 3.0)。
接下来是如何使用这个包的方法:
在.csproj文件中添加以下内容:
//.... 8.0 enable
通过上述步骤,您就可以在Visual Studio 2017中使用C# 8了。
过去的经验表明,尽管新版本的Visual Studio通常会搭载新版本的C#,但是我们仍然有可能通过升级"Microsoft.Net.Compilers" Nuget包来编译先前版本的C#代码。具体的升级方法可以参考这篇帖子:如何在Visual Studio 2015中使用C#7?
在这篇帖子中,series0ne的评论提到了主要发布版本的情况。确实,新版本的Visual Studio通常会配备新版本的C#。然而,过去的经验表明,我们仍然可以通过升级"Microsoft.Net.Compilers" Nuget包来编译先前版本的C#代码。具体的升级方法可以参考这篇帖子:如何在Visual Studio 2015中使用C#7?
如何在Visual Studio 2017中使用C# 8?
微软希望将C#语言版本与.NET框架版本更紧密地联系起来,而不是以往那样。他们真的只希望你在.NET Core 3.x和.NET Standard 2.1项目中使用C# 8,这意味着使用Visual Studio 2019。关于“C# 8是否支持.NET Framework?”的问题,我的回答中有所有详细的细节。
然而,如果你真的想要,你现在可以在Visual Studio 2017中使用C# 8,通过使用将C# 7引入Visual Studio 2015的相同技巧:将最新版本的Microsoft.Net.Compilers Nuget包安装到项目中。这是可行的,但当然,VS 2017不知道C# 8的语法,所以它看起来不太好看。下面的屏幕截图显示了VS 2017可以使用可空引用类型和静态局部方法(这两者都是C# 8的特性)编译一个小的测试库:
(图片链接已省略)
如果你想尝试,这里有.csproj和代码:
(代码已省略)
我来这里是为了弄清楚如何撤销我之前所做的事情;-)在这之后,我遇到了很多间歇性和循环问题,比如动态dll错误(例如无法加载文件或程序集'System.Runtime.CompilerServices.Unsafe'),我再也不会这样做了(VS2019 4.7.2和C#8)。