今天要用VS2010打開VS2013,一直覺得VS2010到VS2012只是界面上扁平化的改變,平台工具集有改變但很大程度上可能向上兼容。在網上搜了一些文章,其中有一篇說到一個觀點:
從VS2010開始,VS使用統一的.sln作為解決方案文件,到目前為止,每個版本的升級只是平台工具集的升級和優化,而解決方案是完全兼容的。你可以用VS2013打開VS2010生成的解決方案,也可以用VS2010打開更高版本的VS2013生成解決方案
我的理解是,從VS2010開始,不再制作專有的文件格式,這只是一個xml格式的文本文件,其中決定了解決方案的平台工具集和VS版本。既然.sln只是個文本文件,重新設定其中指定的VS版本和平台工具集,也許可以用低版本打開高版本的解決方案。
那么就來嘗試用vs2010來打開vs2013,以下是我的嘗試記錄,嘗試中發現除了修改.sln后可以用vs2010打開vs2013,但還要修改項目的平台工具集以保證最好的兼容。
(1)直接打開
用VS2010打開VS2013生成的文件,產生如上提示。
選取一個vs2013的解決方案文件.sln,以文本文檔方式打開它。(我用的是sublime text 2,我認為是款代替記事本的不錯工具,性感而小巧。有人從Notapad+轉為用它,自有其價值吧。)
在文件開頭我們可以看到一些關鍵信息:
Format Version 12.00
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
表明該.sln生成的格式版本是12.00(vs2013),vs版本是12.0.21005.1(vs2013),最小兼容版本是10.0.40219.1(vs2010)。
那也許把該解決方案改成10.0.40219.1以上都行吧?
【版本區別】
像我這樣的新手請注意這里,Version 12.00意味着版本為vs2013而非vs2012,本文末最后已總結了vs版本中的該現象。下一步中改Format Version 為11.00而非10.00
(2)修改.sln文件。
(3)重新打開
用VS2010打開修改后的解決方案文件,成功打開。
(4)編譯
我想起vs2012和vs2010的平台工具集不一致,vs2012是v110,vs2010是v100,vs2013則是v120。我想先不去項目文件里查看,也許在加載解決方案的時候vs已經重置了平台工具集?於是嘗試①直接編譯。
編譯失敗,因為結果平台工具集未重置,本機上沒有vs2013,找不到v120的平台工具集。同時,注意到,有“項目文件包含ToolsVersion="12.0" 設置……將項目視為具有ToolsVersion="4.0" 設置”。這似乎是.Net的工具版本號,不修改的話會自動兼容。
②手動修改之平台工具集版本,編譯看能否運行。
改為
③編譯通過,運行成功。同時,ToolsVersion的版本號是被視為4.0了。
④去查找對應ToolsVersion的項目文件,修改之。
改為
重新編譯,未報錯。
⑤綜合以上,該該項目已經實現從VS2013到VS2010的遷移。
【總結】
低版本VS打開高版本一般要修改的地方。
1、.sln文件中指定的VS版本號和平台工具集
2、修改項目文件中的平台工具集(v4.0→v12.0)
3、其它。
上述“其它”,主要指在配置中與環境變量有關的因版本改變而導致的路徑改變,比如vs2010中的部分lib在 VS 安裝目錄下的 Microsoft SDKs\v7.x 中,在vs2012以后轉移到了 VS 安裝目錄下的Windows Kits中VS 安裝目錄。注意區別。