Visual Studio通过规范不一致的行结束符是什么意思?

Visual Studio偶尔会告诉我:

以下文件中的行结尾不一致。 你想正常化行结束?

然后,它给了我一个下拉不同的标准或某些东西,如Windows,Mac,Unix和一些Unicode的。

这是什么意思,如果我点击Yes ,会发生什么?

这通常意味着你有一些以回车/换行符以外的行结束的行。 当您从网页复制并粘贴到代码编辑器时,通常会发生这种情况。

规范行结束只是确保所有的行结束字符是一致的。 它防止一行以\r\n结尾,另一行以\r\n结尾; 第一个是Windows行结束对,而其他则通常用于Mac或Linux文件。

由于您正在Visual Studio中开发,您显然希望从下拉列表中select“Windows”。 🙂

有些行以\ n结尾
其他一些行以\ r \ n结尾
VSbuild议你让所有的行都结束。

如果您正在使用VS 2012:转到

 >File >>advanced save options >>> select- line endings type as -Windows 

您正在编辑的文件已使用其他一些不使用相同行尾的编辑器进行编辑,从而生成具有混合行结尾的文件。

用于行尾的ASCII字符是:

CR,回车
LF,换行

Windows = CRLF
Mac OS 9或更早版本= CR
Unix = LF

要打开/closures选项,请按照下列步骤操作:

Tools > Options > Environment > Documents > Check for consistent line endings on load

这意味着,例如,一些文本行的<Carriage Return><Linefeed> (Windows标准),一些文本以<Linefeed> (Unix标准)结束。

如果单击“是”,则源文件中的行尾将被转换为具有相同的格式。

这对编译器没有任何影响(因为行尾数只是空白),但是对其他工具(例如版本控制系统上的“diff”)可能会有所不同。

这不仅仅是VS …它将是任何读取文件的工具…编译器,连接器,…必须能够处理它。 一般来说(对于软件开发),我们接受多平台行结束的问题,但让版本控制软件来处理它。

维基百科的新闻文章可能会帮助你。 这是一个摘录:

不同的换行符通常会导致在不同types的系统之间传输的文本文件显示不正确。 例如,源于Unix或Apple Macintosh系统的文件可能在Microsoft Windows上运行的某些程序中显示为单个长行。 相反,在Unix系统上查看源自Windows计算机的文件时,额外的CR可能会显示为^ M或每行末尾或第二个换行符。

这里有一个用于Visual Studio 2008的加载项,可以在保存文件时转换行结尾格式。 你可以在这里下载: http : //grebulon.com/software/stripem.php