2012-04-20 6 views
15

私と私のパートナーは両方ともSubversionを介してC++ソリューションを共有しています。彼は、Visual Studio 11を使用していると私は2回目以降のVisual Studio 2010Visual Studio 2010と11の間でC++ソリューションを共有

を使用しています

彼がコミットし、私は次のエラーを取得、更新:で、また

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

答えて

30

Visual Studio 11には、プラットフォームツールセットを指定できるプロパティオプションがあります。あなたは、Visual Studio 11から始まる新しいプロジェクトを作成する場合

プラットフォームツールセットV110は、デフォルトで使用されますが、場合は、Visual Studioで使用されるものであることV100に変更することができ、2010年

Toolset option

+0

VC++ 2012で既存の2010プロジェクトを初めて開くと、プラットフォームツールセットをv110に「有益に」設定します。これが、私がこのQとAをStackoverflowで得たところです。「シームレスなラウンドトリップ」を宣伝しているにもかかわらず、VC++ 2012が私のプロジェクトをどのように壊してしまったかを調べようとしています。エラーメッセージは、その意味や指定方法を示すことなく、適切なプラットフォームツールセットを指定するように指示しました。もちろん、Microsoftのドキュメントは役に立たなかった。しかし、良い古いDuckDuckGo.comでグーグルとStackoverflowのヒットをクリックした日を保存しました。 –

+0

P.いくつかの往復に縫い目があることを知ったのは誰ですか?いずれにしても、Platform Toolsetの項目はVS 2010の下に表示され、v100に戻すと正常に機能しました。 –

+2

v100に戻すように設定するとVS2010がインストールされることに注意してください。 – JohnW

3

Visual Studio 11に保存された.slnファイルと.vcxprojファイルは、VS2010と下位互換性がありません。たとえ互換性があっても、最終的にはVS11ではコンパイル可能でコードはVS10ではコンパイルできません。

最高の(おそらく唯一の)方法は、まったく同じ開発環境の使用に同意することです。

+1

私はそれを理解していますが、自動アップデートを実行しているとMicrosoftはVC2010をパッチしてVC2012と同じフォーマットを使用します。私はVC++ 2010で "Platform Toolset"を見ています。以前はそれを見たことがありません。 –

0

Aソースコントロールを使用しているので、リポジトリからプロジェクトとソリューションファイルを削除し、ソースコードを共有するだけです。明らかに、新しいモジュールなどをプロジェクトに追加する場合は、手動で別のソリューションに追加する必要がありますが、少なくともこの非互換性については心配する必要はありません。コンパイルに慣れたい場合は、コンパイラーとリンカー・スイッチだけを使用してコマンドラインからアプリケーションを構築できます。コンパイラーとリンカー・スイッチは、リビジョン間の互換性がはるかに優れています。最後に、別のビルドツール(MSBuild以外)を使用して、スタジオバージョン間で互換性を保つことができます。

ソリューションファイルとプロジェクトファイルを削除する場合は、元のYourApp.slnのコピーをYourApp.sln.2010として保存することを検討してください。将来のソリューションを提供するには何かが必要ですが、プロジェクトやソリューションのアップデートはすべてVS 2010から実行する必要があり、ファイルは.2010バージョンにコピーされ、手動で管理されます。

SVNがパッチをサポートしている場合、または外部でキルトを実行したい場合(または水銀に切り替えた場合はMQ拡張を使用できます)、2010年から2011年に変換するパッチファイルを作成し、同期の前にアップグレードパッチを削除してください。

0

解決策のすべてのプロジェクトのプロパティが既にv100に正しく設定されているため、ドレイクのソリューションが機能しませんでした。しかし、動作した修正は、ビルドをクリーンにし、ソースファイルやプロジェクトファイルではない他のすべてのファイルを削除することでした。おそらく、ツールチェインの設定が何らかの形でユーザーの設定で上書きされていた可能性があるので、おそらくファイルprojname.vcxproj.userを削除していたと思います。

関連する問題