网站无法使用插值字符串语法

一个网站,无法使用$"{xxx}"语法,如,
2026-05-19_08-06-18

将文本表示为UTF-16代码单元的序列。
CS8026: 功能“内插字符串”在C# 5 中不可用。请使用 6 或更高的语言版本。

为了网站能首先运行,只有使用下面语法替代,最稳妥的兼容方式,代码清晰且完全符合 C# 5 规范。

string dattaToSign = string.Format("{0}|{1}", domainUser, timestamp);


或者使用 String.Concat

string dataToSign = domainUser + "|" + timestamp;


项目是 .NET Framework 4.8,按理说支持 C# 7.x 甚至更高。

打开网站的web.config,是有看到,

<compilation targetFramework="4.8" debug="true">


许多网上资读,还要查看web.config的system.codedom 设置。查看了,网站上的Web.config并无codedom节点。

只有关闭当前网站,再在VS2026新建一个.net 4.8的网站,打开web.config查看,果然有system.codedom 节点,

<system.codedom>
    <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
        <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
</system.codedom>

 

为什么正试的网站没有此节点呢,也许是网站.net 2.0时创建的,后来不停更新.net版本,至4.8。它还是使用较老 csc.exe 编译器版本。

好吧,把system.codedom节点拷贝至网站中,再次Ctrl + Shift + B生成解决方案后,问题未解,还多了一个错误,遇到编译错误提示某语法不支持
2026-05-19_08-37-00

 

参考错误提示,未能找到CodeDom提供程序类。
使用NuGet来安装并更新吧,搜索 Microsoft.CodeDom.Providers.DotNetCompilerPlatform
2026-05-19_08-45-16

 

 2026-05-19_08-54-21

2026-05-19_08-52-44

 

2026-05-19_08-56-20

 

再次Ctrl + Shift + B方案生成之后,网站在编译过程中,已经无错误出现。
内插字符串已经可以了。

 

posted @ 2026-05-19 09:12  Insus.NET  阅读(20)  评论(0)    收藏  举报