【问题标题】:Say Yes to Inconsistent Line Endings?对不一致的行尾说“是”?
【发布时间】:2014-05-13 23:32:19
【问题描述】:

我正在 Unity 中构建游戏,并且我使用 Visual Studio 2013 作为我的默认 IDE。每当我创建文件时,它都会询问我是否要规范化行尾,因为它们不一致(此处的详细信息:What does Visual Studio mean by normalize inconsistent line endings?)。

我应该说是还是不是?

我最好的猜测是,如果我说“是”,它会清理 Windows 不关心的 Mac 和 Linux 的东西,所以它只会在 Windows 上运行。我对选择“否”的最佳猜测是,它将保持代码在所有三个平台上运行而不会影响其他两个。这是正确的吗?

【问题讨论】:

  • 点击“是”,将改变所有的行尾,但当不在基于 Windows 的系统上编译时可能会导致不兼容。单击“否”,将不执行任何操作,并且会留下任何不正确/不一致的行尾;它可能会或可能不会在其他系统上编译。 TLDR;如果您打算仅在 Windows 上编译,请单击是,否则单击否。
  • 我打算让游戏在 windows、mac 和 linux 上运行。有什么建议可以选择吗?
  • 它对你打算在哪里运行游戏几乎没有影响(最坏的情况可能会产生奇怪的堆栈跟踪) 行尾只对编译器很重要。如果您在 Linux/Mac 上编译游戏,那么您将需要与两者兼容的行尾。游戏编译/构建后,行尾不再重要。

标签: c# unity3d visual-studio-2013 cross-platform line-endings


【解决方案1】:

您是否有可能在从事项目工作时在 IDE 和/或操作系统之间切换,或者您是否与其他人一起工作?

如果是这样,您需要注意项目文件的行尾,并且更改它们可能是个坏主意,因为其他 IDE 可能无法理解它们。 但是,每次打开文件时都会弹出该消息,这在@ss 中可能会很痛苦。您可以将此行为切换到:

工具 -> 选项 -> 文档 -> 在加载时检查一致的行尾

如果没有,您可以更改它们,无论游戏在哪个平台运行,您都不会遇到任何问题。在使用 Unity 时,我只使用带有 Windows 8.1 的 Visual Studio 2013,并且每次都对行尾进行规范化。即使在不同平台上运行游戏,我也从未遇到过问题。我猜它只会影响代码编辑器和编译器工具。编译后的行结束就不再重要了。

【讨论】:

  • 关于“更改它们可能是个坏主意”:您是否理解只有当文件中的行结尾不一致时才会出现此消息?也就是说,一个文本文件,其中一些行以 (LF only) 结尾,而其他行以 (CrLf) 结尾。唯一说“是”会导致问题的情况是,如果您遇到(恕我直言)文本需要混合的情况。例如,您的来源需要是 (CrLf),但您有一个文本字符串需要是 (LF only)。规范化时是否应该选择 Windows (CrLf) 的默认选项以外的其他内容,这是一个不同的主题。
【解决方案2】:

对于大多数用例来说,这并不重要。您可能会使用 VS 或 MonoDevelop。两者都可以处理不同的行尾。仅当您打算使用一些对行尾样式敏感的编辑器时才重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    相关资源
    最近更新 更多