web-dev-qa-db-ja.com

Visual Studio 2012はvs2010ソリューションを変換しませんか?

Vs2010でvs2010ソリューションを開きましたが、2008年から2010年にかけては変換が行われませんでした。そのため、私の解決策はまだ10個のラベルと同じままです。もちろん、新しいソリューションを作成するときには、11個のラベルが付いています。私はそのような実行に問題はありませんが、興味があります。違いはありますか?はいの場合、vs2012ソリューションに変換する方法は?

68
batmaci

いくつかの例外があります 、ただし、ほとんどの場合、VS2012とVS2010 SP1の両方で同じプロジェクトファイルとソリューションファイルを開くことができます。

VS2012may最初にプロジェクトを開いたときにプロジェクトを変換しますが、変更は(リンクされているドキュメントに記載されている場合を除き)VS2010と下位互換性があります(必要に応じて条件を使用します)ロードされたときにどちらかのバージョンにのみ適用されます)ほとんどのプロジェクトタイプは、完全に変更されません。

32

ソリューションファイルを「変換」して、.SLNファイルで「#Visual Studio 2010」を含む行を「#Visual Studio 2012」に変更しました。

106
RuudKok

ソリューションファイルを手動で編集する必要はないか、推奨されません。 VS2012でVS2010ソリューションを開き、ソリューション(ソリューションエクスプローラーの最上部)を左クリックしてから、File |を使用します。 名前を付けて保存元のファイルを上書きします。これにより、VS2010ソリューションファイルがVS2012ソリューションファイルに効率的に変換されます。

90
2Toad

Visual Studio 2012の互換性についてです

Visual Studio 2010 Service Pack 1(SP1)でアセットを作成した場合、それらの多くはVisual Studio 2012で読み込まれ、実行されますが、それ以上の操作は必要ありません。

多くのアセットは、Visual Studio 2012でそれらのアセットを開いた後でも、Visual Studio 2010 SP1でも問題なく再び開きます。

6
user1619962

C++プロジェクトの場合、違いがあります。2012コンパイラ(VC11)は、VS 2012で開かれた2010プロジェクトではなく、明示的に2012のプロジェクトでのみ使用されるためです。 以下を含むVC11コンパイラー、ただしVC10 なし(概要については、この SO Answer を参照)

  • 範囲ベースのforループ
  • 新しい標準ライブラリヘッダー(アトミック、ミューテックス、スレッドなど)
  • より小さな標準ライブラリコンテナサイズ
  • (および 2012年11月のCTP がVS 2012に配信される際に従う必要があります)

VS 2010プロジェクトからVS2012に変換するために、既存のプロジェクトでソリューションファイルまたは「名前を付けて保存」を手動で編集する必要はありません。代わりに:

最初にプロンプ​​トが表示されたときに更新を拒否した場合、Projectメニューを開き、Updateを選択して、後でプロジェクトを更新できます。 VC++プロジェクト...[メニューオプションの上部]

MSDNの「 How to:Visual C++ Projects to Visual Studio 2012 」から
(このページは@Joachimの MSDNリンク からリンクされましたが、SO他の多くの回答では、このVS 2012の機能の代わりに手動の回避策が提案されました)

6
Daryn

私の場合、いくつかのVisual Source Safeがありました(私のプロジェクトはVisual Studio 2003/2005で作成されました、はい、とても古い!)

VSSのものを手動で削除すると、変換は成功しました。 PS:VS2010についてだと知っていますが、これは他の人にも役立つかもしれません。

2
Adi

特定の問題の解決策を探しているときにこの質問に遭遇しました:MSBuildは、コマンドラインから(特にTeamCityを介して)呼び出されたときにVS2010で開始されたVS2012ソリューションに対して発行ターゲットを実行できませんでした:

error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\2.3\Microsoft.WindowsAzure.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

MSBuildは、VS10の場所(C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\2.3\Microsoft.WindowsAzure.targets)でAzure SDK 2.3ターゲットを探していました。原因はSayed Ibrahim Hashimiによって ブログ投稿 で説明されており、私が理解したように、ソリューションファイルのバージョン間互換性を有効にしながら、彼らが下した決定に要約されます。ソリューションは簡単でした。MSBuildの呼び出しにVisualStudioVersionプロパティを追加します。次のようなものです。

msbuild.exe MyAwesomeWeb.sln /p:VisualStudioVersion=11.0

実際には、これにより、各csprojファイルの次の内容が上書きされます。

<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>

おそらく、これらすべてを手作業で編集して10.0を11.0に置き換えることで同じ結果を得ることができますが、後方互換性が損なわれる可能性があります-私は試していません。また、VS2013の更新を試みて、問題が解決するかどうかを確認していません。

質問に答えてこれをまとめると、はい、「変換」する前に(他の回答者が提供する方法を使用して)いくつかの違いがあり、その後いくつかの違いが残ります。

1
Dave Gregory

以下を実行して、プロジェクトをVS2010からVS2012に変換できます。

  1. ソリューションエクスプローラーでソリューションを右クリックし、[追加]-> [既存プロジェクト]を選択して、2010プロジェクトをVS2012ソリューションに追加します。

  2. プロジェクトがソリューションに表示され、その名前に(Visual Studio 2010)が追加されます。

  3. 追加したプロジェクトを右クリックして、[プロパティ]を選択します。

  4. [構成プロパティ]-> [一般]ウィンドウで、[プラットフォームツールセット]フィールドの設定をVisual Studio 2012(v110)に変更します

  5. 構成タイプごとに繰り返します。リリースとデバッグ。

1
zooropa

これはわずかに異なりますが、同じ行に沿っているので、万人に役立つ場合があります:

読み込み中のように見えるプロジェクトを読み込み、すべてのプロジェクトを利用不可として表示し続けました。移行レポートにはエラーはありませんでした。ここで提案を含むさまざまな方法を使用して、ソリューションとプロジェクトを何度もリロードしました。

最後に、ソリューションエクスプローラーでソリューションを右クリックすると、[エラーの解決]オプションが見つかりました。 VSは再びロードプロセスを実行し、機能しました。問題はありません。

私はその時どう違うのか分かりませんが、どうやら違いをもたらしたようです。

0
user2585308

.solファイルを編集してバージョンを11に変更するだけです。

このような

Microsoft Visual Studioソリューションファイル、形式バージョン12.00

0
Same7Farouk