« ツイート引用のテスト記事 | トップページ | 色指定は、GetColorを使おう »

2015.07.20

Visual Studio Version Selectorの話

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

どうも。
しばらくブログの更新が滞っていたかげさんです。

今回は、Visual Studio Version Selectorの話題です。

今のかげさんのメイン開発マシンであるWindows7のデスクトップには
以下のバージョンのVisual Studioがインストールされた状態である。

Visual Studio 2008 Express Edition
Visual Studio 2010 Express Edition
Visual Studio 2012 Express Edition
Visual Studio Community 2013

Windows8.1側のように2012や2013とかをいきなり入れるのでも
良かったのだけど、
Visual Studioは古いバージョンからインストールした方が良いので
一応、2010も含めて入れることにしました。

Effekseerの導入に当たって調べた長い道のり?1
でかげさんは、こんなことを書いています。

Visual Studioをバージョンアップして 既にあるソリューションファイルを開くと Visual Studioは、 ソリューションファイル(.sln)とか プロジェクトファイル(.vcproj)のバージョンを上げようとするのです。

実は、この記述は状況によっては正しいのですが
状況によっては間違っています。

まず、上記の記載が正しいパターンですが、
これは、既にあるソリューションファイルが作られたVisual Studioよりも
新しいバージョンしかインストールされていない時です。

昔も含めると、かげさんはVisual Studio 2008以降のインストールを
この順番で行いました。
1.WindowsXPにVisual Studio 2008(初音ミク冒険記の開発以前)

2.Windows7のノートにVisual Studio 2010(初音ミク冒険記の開発以前)

★このタイミングで初音ミク冒険記のWindows版の製作開始

3.Windows7のノートにVisual Studio 2010アンインストール後2008
 (初音ミク冒険記の開発を2008に合わせるため)
 (マシン環境がヘボくて2010を動かすのが重かった・・・)
 (Visual Studioを複数バージョンにする時は
  古いのから入れる必要があるので2010をアンインストールした)

★メイン開発環境のデスクトップを購入
 (このマシンは、Windows7と8のデュエルブートにした)

4.Windows7のデスクトップにVisual Studio 2008

★Effekseer導入のために2015/06からバージョンアップ検証作業開始

5.Windows8のデスクトップにVisual Studio 2012
6.Windows8.1のデスクトップにVisual Studio 2013(5と6の間で8→8.1にバージョンアップ)

7.Windows7のデスクトップにVisual Studio 2010
8.Windows7のデスクトップにVisual Studio 2012
9.Windows7のデスクトップにVisual Studio 2013

この順番をよくみると、
実は、1つのマシンの同一OSに複数バージョンのVisual Studioが導入されたのは
6の段階が初めてです。

6の段階ではWindows 8.1上に2012と2013が入っています。

このように1つのマシンの同一OSに複数バージョンのVisual Studioが導入されて
既にあるソリューションファイルを開くと
Visual Studioは、
ソリューションファイル(.sln)とか
プロジェクトファイル(.vcproj)のバージョンを上げずに
ソリューションファイルの内容から、該当するVisual Studioを起動しようとします。
(先に書いた状況によっては間違っているというのは、このパターンです)

かげさんが知らなかったのは、この動きです。
この状況になるパターンを
自宅環境でも仕事環境でも作ったことがなかったからです。

どういう仕組みになっているかというと
拡張子slnの関連付けがVisual Studio Version Selectorになっていて
このプログラムがソリューションファイルの中身を解析して
しかるべきVisual Studioのバージョンを起動するようです。

なので、2008のslnを2012しかない環境で
エクスプロラーからダブルクリックで開いた時には、
2008が無いので2012が起動して
ソリューションファイルやプロジェクトファイルの
バージョンアップがされたのに
2012と2013が同時にインストールされている時には、
2012が起動してくるといったことが起きました。

ただし、「しかるべきVisual Studioのバージョンを起動する」のは
エクスプローラでダブルクリックした時です。

2013からソリューションファイルを開くで2012のファイルを指定すると
ソリューションファイルやプロジェクトファイルのバージョンアップを
しようとします。

確かに以前検証した時も、こんな比較結果がありました。
Vs_version_df04

上の2つがソリューションファイルのコメント部分なんですが
このコメントは、後から見た時に分かるだけじゃなく
Visual Studio Version Selectorの動作にも影響していたようです。

他にもプロジェクトファイル(vcxproj)の中にも
バージョン情報があって、2012のソリューションファイル、プロジェクトファイルを
2013にバージョンアップすると、このバージョン情報が変わっていました。

2012→2013のバージョンアップは、この辺りが中心なだけで
他の情報がおかしくなるといったことはなかったので
サクッとリビルドやデバッグ実行ができました。

検証したところ
Effekseerの導入に当たって調べた長い道のり?3
に書いたような
「プロジェクトのプロパティの項目がいくつか抜け落ちる」現象は
2008→2010の時に発生しました。

Visual Studioのバージョン間の違いについて(2008 → 2012)
にも書きましたが

ビルドシステムは
VS2005で導入されたビルドシステムはVCBuild。
それがVS2010からMSBuildに変わった

というのが大きいみたいです。

それと、後から思い出しましたが、どこかの記事に
VisualStuioって2010から過去資産のソースを改良ではなく、
新規に作りなおしていると書いてあったので
内部的には結構変わっているのでした・・・

で、これらのことが分かったのでメイン開発環境の7に
2008より上のバージョンを順番にインストールしていきました。

コレも以前に書きましたが
ソリューションファイルは2008版を別名で残すことにしたので
2012以降をインストールしていないマシンでも
Effekseer関連の部分は昔のままですが、ビルドとか実行もできるようにしてます。

思い残すことはないので
当面の初音ミク冒険記本体の開発は2013で行う予定でいます。

DXライブラリが正式版のVisual Studio 2015に対応したら
2015にするかもしれませんが・・・

それと、開発ツールを作っているC#側の調査は、ほとんどしなかったのですが
ざっくり検証したときはC# 2008のプロジェクトを
2012、2013混在環境で開くと2013に変換されたのは、
多分、バージョンセレクタが該当バージョンがないから
最新バージョンを選択したからだと思ってる。

後からわかったこととしては、一部自動生成されるファイルでも
Visual Studioのバージョン情報を持っていて
上位のバージョンで開くとこの値が書き換わっているようでした。

特にC#側は新しいバージョンを使ってみたいと思う動機がなかったので
とりあえずC#のツールは、今の2008で作っていこうと思います。

VC++でC++11を使うといった明確な動機がなく
C#側は2008でいろいろとテンプレートプロジェクトを作ったので
それの移行が面倒だし・・・


 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

トラックバック

この記事へのトラックバックの一覧です: Visual Studio Version Selectorの話:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。
URLも記入すれば、URLのみが公開されます。
メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。