代码在 .Net 5 中有效,但在 .Net 6 中无效

Code works in .Net 5 but doesn't work in .Net 6

我已经通过 Visual Studio 反馈工具报告了这个可能的错误,但我有以下示例代码在 .Net 5 中运行但在 .Net 6 中无法正常工作,我觉得这要么错误或我遗漏了版本之间发生变化的内容。我有下面的示例代码以及使用来自这两种方法的 Visual Studio html 可视化工具的 html 输出。有人对这个问题有任何可能的意见吗?

更新:根据@GSerg 的有用建议,通过不同的测试,我发现这个错误只发生在 .Net 6 中,当你在字符串插值或 stringbuilder 中使用 html 标签时,它会被切断插入变量之前的文本并将其插入第二行。我附上了一张使用 visual studio 可视化工具显示此行为的新屏幕截图。

var subect = "Subect Example";
var test = $"<p><strong><span style=\"font-size: 20px;\">{subject}</span></strong></p><p><span style=\"color: rgb(34, 34, 34); font-family: Arial, Helvetica, sans-serif; " +
           $"font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; " +
           $"text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; " +
           $"text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;\">The following information is in beta testing and isn't meant for a live portfolio. " +
           $"Use this information for paper trading only until further notice.</span></p>";

.Net 5 HTML 输出:

.Net 6 HTML 输出:

.Net 6 文本输出:

这似乎是 Visual Studio 2022 中的一个错误,该错误仍在预览中,因此并不意外。 虽然此错误未修复,但您可以使用 dotnet cli 构建作为解决方法。

以下代码重现了错误

string two= "2";
string test = $"1 {two} 3" 
    + $" 4" 
    + $" 5";
Console.WriteLine(test);

使用 Visual Studio 2022 预览版 3.1 将此代码构建为 .NET 6.0 时,代码将编译为

    string two = "2";
    DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(8, 1);
    defaultInterpolatedStringHandler.AppendLiteral(" 3");
    defaultInterpolatedStringHandler.AppendFormatted(two);
    defaultInterpolatedStringHandler.AppendLiteral("1 ");
    defaultInterpolatedStringHandler.AppendLiteral(" 4");
    defaultInterpolatedStringHandler.AppendLiteral(" 5");
    string test = defaultInterpolatedStringHandler.ToStringAndClear();
    Console.WriteLine(test);

产生输出 321 4 5

但这特定于使用 Visual Studio 构建 .NET 6.0。使用 dotnet build 构建时 代码编译为

    string two = "2";
    string test = "1 " + two + " 3 4 5";
    Console.WriteLine(test);

产生正确的输出。