Visual Studio Razor?中的.NET核心字符串插值错误

cotxawn7  于 2023-02-13  发布在  .NET
关注(0)|答案(1)|浏览(127)

我不明白为什么在. cshtml/Razor页面中输入时无法编译:

@($"{"\""}") <-- this does not work

@($"{"'"}") <-- this also does not work

@($"{"a"}") <-- this DOES work

错误指出:
RZ1000:未终止的字符串文字。以引号(")开头的字符串必须在行尾之前终止。但是,以@和引号(@")开头的字符串可以跨多行。
CS1002:;预期
CS1513:应输入}
看起来非引号字符工作正常,但是双引号或单引号字符破坏了Razor解析插入字符串的能力,即使引号字符被转义。
所有示例在纯. cs文件中都能正常工作:

public sealed class Test
{
    public string x = $"{"\""}";
    public string y = $"{"'"}";
    public string z = $"{"a"}";
}

怎么回事?
我的环境如下:

  • . NET软件开发工具包:版本7.0.102*
  • . NET运行时:第7.0.2版*
    • C#:v11(预览版)**
    • Visual Studio社区2022(64位):版本17.4.4**

ilmyapht

ilmyapht1#

是个窃听器。
然而,dotnet/aspnetcore github页面上的dotnet工程师认为修复它所需的工作量超过了它所带来的好处:
在进一步调查这个问题后,发现完成这个任务的要求非常高(需要在令牌化器级别上接近完整地理解C#)。
两个月后...
转移到backlog是因为我们觉得这些情况在MVC视图中并不常见,并且有一些简单的变通方法(例如,使用string.format()代替字符串插值)。
https://github.com/dotnet/aspnetcore/issues/4976

相关问题