【问题标题】:About the leading newline in Visual Studio solution files关于 Visual Studio 解决方案文件中的前导换行符
【发布时间】:2010-03-18 12:12:26
【问题描述】:

有时,出于未知原因,VS 2008 会创建由换行符引导的解决方案文件。

Microsoft Visual Studio 解决方案文件,格式版本 10.00 # 视觉工作室 2008 [...]

这发生在各种机器上,我不知道为什么会这样。谷歌搜索没有产生任何有用的结果。

现在,我为什么要担心这个?因为我无法在 Windows 资源管理器中打开这些解决方案。我必须打开VS,选择文件->打开->解决方案,它工作正常。但是要从资源管理器中打开解决方案,我必须编辑 sln 文件并删除前导换行符。

编辑:根据 Leom 的建议,我测试了几次,发现问题完全取决于前导换行符。

编辑: 有趣:VS 2010 以相反的方式显示相同的行为:它适用于前导换行符!至少在某些解决方案上 - 在其他解决方案上它与 VS 2008 完全相同。我很困惑。

【问题讨论】:

  • 我所有的解决方案都有一个空白行作为文件的第一行,当我从资源管理器中双击时它们都可以正常打开。空行是否可能不是您问题的根本原因。
  • 可能的。好主意。删除换行符后保存 sln 文件可能会产生一些副作用。我会测试。

标签: visual-studio-2008 projects-and-solutions


【解决方案1】:

我也观察到从资源管理器打开 .sln 文件的奇怪行为。

  • 如果将解决方案文件保存为 UTF-8 或 Unicode,请以空行开始 .sln 文件。否则双击打不开。
  • 如果您将解决方案文件保存为 ANSI,请不要以空行开始 .sln 文件。否则双击打不开。

似乎 Visual Studio 版本选择器不信任 BOM 并且想要一个前导新行,除非文件采用 ANSI 编码,否则必须省略前导新行。

在解决方案文件上执行另存为并选择不同的编码时,您可以自己看到这一点。

可能是一些遗留的东西。

【讨论】:

  • 区别似乎在于 BOM:如果存在 BOM,则第一行必须为空白,否则文件不得以空行开头。但是,VS 2012 版本选择器似乎根本不喜欢 Unicode (UTF-16) 解决方案(有或没有 BOM),只能识别 ANSI/UTF8+BOM。
【解决方案2】:

我的解决方案文件中也有一个空行,但我没有这个问题。

我做了一些挖掘,似乎解决方案文件实际上启动了 Visual Studio 版本选择器,以及.sln 的前 2 行(不确定是实际的前 2 行还是前 2 行文本)文件act as the input parameters for this selector.

此可执行文件可能已损坏。

另外,你可以在 Visual Studio 中尝试Tools->Options->Environment->General and choose the "Restore File Assoications"

【讨论】:

    【解决方案3】:

    我也遇到了同样的问题。在使用 IBM 合理的 clearcase 进行反向合并后,我观察到了这种情况。它在反向合并期间在“.sln”文件的开头引入了一个空白行。为了解决这个问题,我在编辑器中打开了 sln 文件(我使用了 VI)并删除了空白行并保存了文件。然后在visual studio中双击打开文件。

    【讨论】:

    • 在为我的 VS2010 解决方案重命名包含项目的多个目录后,我不再能够双击打开解决方案。删除空白行解决了这个问题。
    【解决方案4】:

    我刚刚在我的项目中重命名了几个目录并手动编辑了 .sln 文件,它停止自动加载 Visual Studio 2010。

    我尝试保存为 UTF-8,但没有成功。不过去掉开头的空行,就恢复了双击打开的能力。

    我不明白,但是现在对我有用。

    【讨论】:

      【解决方案5】:

      Visual Studio 解决方案文件,由于未知原因,必须以空行开头。您的问题可能与新行的存在/不存在无关,而是与编码有关——如果 SLN 文件在 VS 之外进行编辑,则可能会在没有字节顺序标记 (BOM) 的情况下保存它。尝试在记事本中打开 SLN 文件并执行另存为 -> 选择 UTF-8 编码。

      【讨论】:

        【解决方案6】:

        我有一个 sln 从 VS2005 升级到 VS2008,但它不会在双击时打开(默认情况下它使用 Visual Studio 版本选择器打开)。我查看了现有的 VS2008 sln,它有一个领先的换行符,而升级后的 sln 没有它。在升级后的 sln 中添加了一个前导换行符,它可以正常打开。

        似乎 VS2008 使用带有前导换行符的“Microsoft Visual Studio 解决方案文件,格式版本 10.00”,而 VS2005 使用没有前导换行符的“Microsoft Visual Studio 解决方案文件,格式版本 9.00”,但前者将 VS2005 sln 转换为VS2008 sln 不考虑添加换行符。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-16
          • 2015-11-28
          • 2010-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多