Visual Studio 2008 SP1

Visual Studio 2008 SP1 がリリース。
更新内容についての詳細資料が見つからず不安ではあったのだが、無印が余りにも不安定なので、即座に飛びついてしまった。

現状、大きな問題は無し。寧ろ明らかに安定感がアップ。
・・・なのだが、不安だったので調べてみるとこんなの発見。

http://d.hatena.ne.jp/espresso3389/20080815

曰く、Visual Studio が自動的に生成する manifest が指定するランタイムのバージョンが古いままになっているらしい。
# SP1 の適用でランタイムのバージョンが上がっていた

まじっすか?と思って、確認してみると、9.0.21022.8 と記載されている。
(新しいランタイムのバージョンは 9.0.30729.1)

直接プログラムと同じディレクトリ下に置いてやれば、強制的に新しい方をロードしてくれるっぽいが、マージモジュールを利用する場合は痛い。
まぁ、そもそも新しいランタイムの修正点が見つけられてないので置き換えるリスクもあるのだけれども(笑

とりあえず、上記のページにリンクが張られていた Microsoft Connect の回避策で

#define _BIND_TO_CURRENT_VCLIBS_VERSION 1

を定義しやがれとあったのでプリプロセッサ定義の所に入れてみると*1確かに manufest のバージョンが変わった。


・・・でだ。
プロジェクトファイルが 60 個あって、Debug と Release それぞれに記載する必要が・・・。
とりあえず、塩漬けの方向で(笑

まずは、ランタイムの修正内容追いたいなぁ。


*1:間違えて、直接ヘッダに書き込んだら、一部でエラー発生。
ランタイムのバージョン制御は crtassem.h で定義されているらしくて、どのヘッダが定義されるよりも前に定義する必要があるらしい。
ついでに、この辺の制御で _BIND_TO_CURRENT_VCLIBS_VERSION の値が 0 と 1 が混在すると、manufest 中のバージョン定義に 9.0.21022.8 と 9.0.30729.1 が併記される様になった。
どんな挙動になるか気になる・・・w