2017年8月18日金曜日

Visual Studio での開発バージョン

Visual Studio での開発バージョン


長年 Visual Studio で開発をしていると、バージョンが上がっても特に意識することなく開発を続行できる。
もちろん、ここで言う「意識」とは、バージョンを上げるという「意識」は存在するし、参照しているDLLの関係上バージョンを上げられないという「意識」も存在する。それらすべての条件をクリアした状態でのバージョンアップの作業という意味での「意識」だ。

この辺りの使い勝手の良さは、Visual Studio が他を圧倒している。

だが、バージョン物である以上、バージョン間の互換性の問題がつきまとう。
冒頭で述べたバージョンアップに関しては、諸条件をクリアしていれば特に意識することはないが、一旦上げたバージョンを以前のバージョンの Visual Studio で開こうとすると叱られる。叱られるどころか、そもそも開けない状況になることがある。

そんな時はソリューションファイル .sln をテキストエディタで開いて開発バージョンを確認するが、分かりづらいため覚えとして載せておく。

自分の開発環境でこんなソリューションファイルを見つけた。

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2010




このソリューションファイルを最後に開いた Visual Studio バージョンは 2012 だ。
つまり、Format Version 12.00 の部分が最後に開いたバージョンで、# から始まる行はコメントで、このソリューションファイルを作成したバージョンということだろう。

分かりづらい。

Format Version に記述されているバージョン番号の対応を記すと、

Format Version 10.00 → Visual Studio 2008
Format Version 11.00 → Visual Studio 2010
Format Version 12.00 → Visual Studio 2012

となり、2012 で作成したソリューションファイルの中身は、

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012

となる。
ここまでは何とか分かるが、2013 から複雑になる。
Visual Studio 2013 で作成したソリューションファイルの中身が以下。

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013

そう、Format Version は 12.00 のままなのだ。
ただし以下の2つの項目が増えている。

VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1

ビルド番号以下は Update の適用によって変わるだろうが、そもそも MinimumVisualStudioVersion とは?
ちなみにこのソリューションファイルは 2010 で開けない。
結局、このソリューションファイルを理解できる最小のバージョンということだろう。
つまり手を加えれば開けますよ、ということか。

分かりづらい。

そして、Visual Studio 2015 はもっと凄いことになる。

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1

Format Version は 12.00 のままだし、2015 って、Visual Studio 14 ていうのね。

分かりづらい。

分かりづらいながらも結論としては、

1.基本的に、Visual Studio のバージョンは下げない。

どうしても下げる必要があるときは、下位のバージョンでソリューションを作成し、既存のプロジェクトにリンクするか、ソースファイルなどの構成ファイルを新しいソリューションフォルダまたはプロジェクトフォルダにごっそりコピーして、各プロジェクトに追加していく。その際、元のプロジェクトファイルをテキストエディタで開いて、構成ファイルや参照を確認しながら追加する。(この作業をやったことがある人は分かると思うが、本当にめんどくさい!)

2.開発バージョンを確認するときは、ソリューションファイルをテキストエディタで開き、以下の規則にしたがって判別する。

・VisualStudioVersion = xx.x.xxxxx.x の記述がない場合は上で書いたバージョン番号対応で確認する。
・VisualStudioVersion = xx.x.xxxxx.x の記述がある場合は、
 VisualStudioVersion = 12.0.xxxxx.x は Visual Studio 2013、
 VisualStudioVersion = 14.0.xxxxx.x は Visual Studio 2015
 とする。

Visual Studio 2017 はどうなってるんだろう。

※間違いがあれば指摘してください。