是一個.net framework 4.6.2的asp.net網站專案,C#語言級別設定為6.0。在 Visual Studio 2022 中開發代碼時,無法識別以下代碼。
Console.WriteLine($"Hello {name}");
既然字串插值是 C# 6 中引入的新特性,而且我們專案中的語言級別已經設定為 C# 6,為什么仍然無法被語法識別?
之后,我在 Nuget 控制臺中運行命令Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Version 3.6.0,問題就消失了。
為什么它以前不能與 C# 6 一起使用?做什么DotNetCompilerPlatform才能讓它發揮作用?
uj5u.com熱心網友回復:
終于明白了,分享給遇到同樣問題的朋友。
.Net Framework 4.6.2 已經支持 C# 6 語法,包括字串插值。
如果是控制臺應用,默認使用.Net Framework 4.6.2的編譯器(Roslyn),已經支持C# 6。一切正常。但是如果是asp.net網站專案,因為C#代碼不是在VisualStudio中編譯的,而是在IIS收到第一個http請求的時候編譯的。默認情況下,IIS 不會使用 Roslyn 編譯網站。所以,我們需要告訴 IIS 使用特定的編譯器來支持 C#6。這就是為什么我們必須在命令下面運行
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -Version 3.6.0
當我們在 Viusal Studio 中撰寫 asp.net 網站的 C# 代碼時,它可能也有類似的機制,所以它顯示紅色波浪線表示有錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/523975.html
上一篇:有條件地抑制編譯器“空檢查”警告
