2012-04-20 167 views
15

我和我的合作伙伴都通過顛覆共享C++解決方案。在Visual Studio 2010和11之間共享C++解決方案

他使用Visual Studio 11和我使用Visual Studio 2010中

第一次後,他COMMITED和我更新,我得到以下錯誤:

Error 31 error MSB8008: Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected.

而且,頭文件我得到#include <stdio.h>以下錯誤:

error: cannot open source file "stdio.h"

我猜測這是一個兼容性問題。我們如何解決這個問題?

+0

你應該使用類似CMake的東西,並且每個都生成所需的VS版本的自己的解決方案 – relaxxx 2012-04-20 12:24:00

回答

30

在Visual Studio 11中有一個屬性選項,允許您指定平臺工具集。

平臺工具套件V110默認使用,如果你創建的Visual Studio 11開始一個新的項目,但如果可以把它改成V100是由Visual Studio所使用的2010年

Toolset option

+0

當您在VC++ 2012中打開一個現有的2010項目的第一次,它會「很有幫助」設置平臺的工具包,V110。這就是我得到了這個Q和A#2 - 「無縫往返」試圖找出VC++ 2012如何打碎了我的項目,儘管一刊登廣告該錯誤消息僅告訴我指定正確的平臺工具集,而不給出任何關於這是什麼意思或如何指定它的指示。當然,微軟文檔是無用的。但是在老的DuckDuckGo.com上用google搜索並點擊Stackoverflow命中節省了一天的時間。 – 2012-09-29 05:30:07

+0

P.s.誰知道一些往返旅行有接縫?無論如何,平臺工具集項目顯示在VS 2010下,並將其設置回v100工作得很好。 – 2012-09-29 05:33:49

+2

請注意,將其設置回v100需要安裝VS2010。 – JohnW 2013-07-12 19:37:20

3

保存在Visual Studio 11中的.sln和.vcxproj文件不與VS2010向後兼容。即使它們是兼容的,最終你會跨越一個可在VS11中編譯但不在VS10中的代碼。

最好的(也許是唯一的)方法是同意使用完全相同的開發環境。

+1

據我所知,如果您有自動更新運行,Microsoft修補VC2010,以便它和VC2012使用相同的格式。我現在在VC++ 2010中看到了「Platform Toolset」,我不記得在那裏看到過它。 – 2012-09-29 05:35:59

0

一但是由於您使用的是源代碼管理,因此您可以從存儲庫中刪除項目和解決方案文件,然後共享源代碼。很明顯,如果你在一個項目中添加新模塊等,你必須手動將它們添加到另一個解決方案中,但至少你不必擔心這種不兼容性。如果您想深入瞭解,可以使用編譯器和鏈接器開關從命令行構建應用程序,這些開關通常在修訂版之間更加兼容。最後,你可以使用另一個構建工具(除了MSBuild),這個工具在各個演播室版本之間保持兼容。

如果您決定刪除解決方案和項目文件,需要考慮的一件事是將原始YourApp.sln的副本保存爲YourApp.sln.2010。然後,您將擁有一些可以從未來的解決方案中獲利的項目,但項目和解決方案的更新都需要在VS 2010中完成,然後將該文件複製到.2010版本並手動維護。

如果SVN支持補丁,或者如果您願意在外部運行quilt(或者如果切換到mercurial,您可以使用MQ擴展),則可以創建補丁文件以將其從2010轉換爲2011,在同步之前刪除升級補丁。

0

由於解決方案中所有項目的屬性已正確設置爲v100,因此Drake的解決方案對我無效。但是,確實有效的修復方法是清理構建並刪除非源文件或項目文件的所有其他文件。我認爲它可能會刪除修復它的文件projname.vcxproj.user,因爲工具鏈首選項可能在用戶首選項中被重寫。

相關問題