这是一个带有asp.net框架4.6.2的.net网站项目,C#语言级别设置为6.0。在Visual 2022中开发代码时,无法识别下面的代码。
Console.WriteLine($"Hello {name}");
既然字符串内插是C# 6中引入的一种新特性,而且我们的项目中的语言级别总是设置在C# 6中,那么为什么语法仍然无法识别呢?
之后,我用Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Version 3.6.0在Nuget控制台中运行命令,问题就解决了。
为什么以前不使用C# 6呢?DotNetCompilerPlatform是如何使它工作的?
发布于 2022-10-31 13:17:44
最后,我得到它,并与你分享它,谁也可能有同样的问题。
.Net Framework4.6.2已经支持C# 6语法,包括字符串内插。
如果它是一个控制台应用程序,默认情况下,它将使用.Net Framework4.6.2的compier(Roslyn),后者已经支持C# 6,一切都很好。但是,如果它是一个asp.net网站项目,因为C#代码不是在VisualStudio中编译的,而是在它收到第一个http请求时在IIS中编译的。默认情况下,IIS不会使用Roslyn编译网站。因此,我们需要告诉IIS使用特定的编译器来支持C#6。
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Version 3.6.0
当我们在视频工作室中编写asp.net网站的C#代码时,它可能也有类似的机制,因此它显示红波线来判断错误。
https://stackoverflow.com/questions/74215952
复制相似问题