2010-03-18 91 views
5

有时,由于不明原因,VS 2008会创建由换行符引导的解决方案文件。关于Visual Studio解决方案文件中的领先换行

 

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

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

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

编辑:在Leom的建议后,我测试了几次,发现问题完全取决于领先的换行符。

编辑:有趣:VS 20 显示相同的行为周围的其他方法:它仅作品与一家领先的一行!至少在某些解决方案上 - 在其他解决方案上,它与VS 2008完全相同。我很困惑。

+0

我所有的解决方案都有一个空白行作为文件的第一行,当我从资源管理器中双击时它们都打开。空白行可能不是问题的根本原因吗? – 2010-03-18 12:20:02

+0

可能。好主意。也许在删除换行符后保存sln文件有一些副作用。我会测试。 – mafu 2010-03-18 12:49:15

回答

2

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

我做了一些挖掘,看起来解决方案文件实际上启动了Visual Studio版本选择器,并且sln文件的前2行(不确定它是实际的前2行还是前2行文本)充当此选择器的输入参数,link

可能有这个可执行文件可能损坏。

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

blog post here

0

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

2

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

+0

重命名包含VS2010解决方案项目的许多目录后,我无法再双击打开该解决方案。删除空行解决了问题。 – RuairiQ 2011-09-27 08:23:26

1

我只是改名几个目录在我的项目和手动编辑.sln文件,它会自动停止加载Visual Studio 2010中

我想保存为UTF-8,但没有成功。但是,在开始时删除空行会恢复双击打开的功能。

我不明白,但嘿它现在适合我。

0

我有一个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不考虑添加换行符。

4

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

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

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

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

可能是一些遗留的东西。

+0

差异似乎存在于BOM中:如果存在BOM,则第一行必须为空,否则该文件不得以空行开始。然而,VS 2012版本选择器似乎根本不喜欢Unicode(UTF-16)解决方案(有或没有BOM),只有ANSI/UTF8 + BOM被识别。 – 2013-04-08 11:37:14

相关问题