代码之家  ›  专栏  ›  技术社区  ›  mafu

关于visual studio解决方案文件中的主要换行符

  •  5
  • mafu  · 技术社区  · 14 年前

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

    Microsoft Visual Studio Solution File, Format Version 10.00
    # Visual Studio 2008
    [...]
    

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

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

    编辑: 在leom的建议之后,我测试了几次,发现这个问题完全取决于领先的新线。

    编辑: 有趣:vs 20 以相反的方式显示相同的行为:它 只有 与领先的新线合作!至少在某些解决方案上-在其他解决方案上,它与VS2008完全相同。我很困惑。

    6 回复  |  直到 13 年前
        1
  •  2
  •   gooch    14 年前

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

    我做了一些挖掘,看起来解决方案文件实际上启动了visual studio版本选择器,sln文件的前两行(不确定它是实际的前两行,还是前两行文本)用作此选择器的输入参数, link .

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

    此外,您可以在Visual Studio工具中尝试->选项->环境->常规并选择“还原文件关联”

    blog post here .

        2
  •  4
  •   The_Fox    13 年前

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

    • 如果将解决方案文件保存为utf-8或unicode,请以空行启动.sln文件。否则双击时将不会打开。
    • 如果将解决方案文件保存为ANSI,则不要以空行开头.sln文件。否则双击时将不会打开。

    visual studio版本选择器似乎不信任bom,希望有一个前导新行,除非文件采用ansi编码,否则必须省略前导新行。

    当你做一个 另存为 在解决方案文件上选择不同的编码。

    可能是一些遗留的东西。

        3
  •  2
  •   MUSTAQ    14 年前

    我也面临同样的问题。在使用ibm rational clearcase进行反向合并之后,我观察了这个场景。它在反向合并期间在“.sln”文件的开头引入了一个空行。为了解决这个问题,我在编辑器中打开了SLN文件(我使用了vi),删除了空白行并保存了文件。然后在visual studio中双击打开该文件。

        4
  •  1
  •   Tilendor    14 年前

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

    我试着存成utf-8却没有成功。但是,在开始时删除空白行恢复了双击打开的能力。

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

        5
  •  0
  •   Srdjan Jovcic    14 年前

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

        6
  •  0
  •   blizpasta    13 年前

    我有一个从vs2005升级到vs2008的sln,但它不会在双击时打开(默认情况下,它是用visual studio版本选择器打开的)。我查看了一个现有的vs2008 sln,它有一个领先的新线,而升级后的sln没有它。在升级后的sln中添加了一个领先的换行符,它的打开效果很好。

    VS2008似乎使用了“Microsoft Visual Studio解决方案文件,格式版本10.00”,并带有一个前导换行符;VS2005使用了“Microsoft Visual Studio解决方案文件,格式版本9.00”,但前者将VS2005 SLN转换为VS2008 SLN不需要添加新台词。