2010-03-18 41 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

相關問題