gpt4 book ai didi

C# Verbatim 字符串换行符 : CRLF, CR 或 LF?

转载 作者:太空狗 更新时间:2023-10-30 01:30:01 27 4
gpt4 key购买 nike

我今天遇到了一个有趣的问题,我的测试在构建机器上一直失败,而即使它们在我的机器上工作得很好,即使使用相同的配置。当我在故障转储中查看 Assert.AreEqual 输出的差异时,我看不出有什么不同。经过一系列调查,我发现测试用例源代码中的逐字字符串(跨越多行)在我的机器上使用 CRLF,但在构建机器上使用 LF,导致该字符串与生成的字符串进行比较失败的字符串。罪魁祸首原来是两个系统上的 Git 设置不一致,构建系统自动将 CRLF 序列转换为 LF。

C# 规范是否说明了应如何解释逐字字符串中的换行符(可能使用 Environment.Newline,或至少是一致的东西)?这似乎是一个可能让很多人难以诊断和修复的问题,尤其是在 .NET Standard 中。例如,如果您有一个 .NET Standard 项目,并且在 Linux 和 Windows 上都有团队成员,这可能会影响 Linux 团队成员或 Windows 团队成员。

最佳答案

规范通过不解决来解决这个问题:

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure

In a verbatim string literal, the characters between the delimiters are interpreted verbatim, the only exception being a quote_escape_sequence.

由于行尾没有异常(exception),您可以得到源文件中使用的任何行尾。正如您所发现的。

关于C# Verbatim 字符串换行符 : CRLF, CR 或 LF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48196840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com