VC++ Express 2010にSP1を適用したらx64コンパイルできなくなったでござるの巻
私は、Visual Studioは買ってなくて、もっぱらExpressを使っています。最近のメインはVisual C++ Express 2010。Visual C++ Expressは、それ自身では32ビットコンパイルしかできないのですが、Windows SDKをインストールするとx64とかItaniumとかのコンパイルもできるようになります。
そうやって、Visual C++ Express 2010でx64バイナリを作っていたのですが、先週末から急にx64コンパイルができなくなってしまいました。コンパイルしようとすると、次のようなメッセージが出てとまってしまうのです。
Error: The "ConfigurationGeneral" rule is missing from the project
また、x64用のプロジェクトのプロパティを表示しようとすると、よくわからないダイアログが出て、プロパティを参照できない状態にもなってしまいました。
ずいぶん困ったのですが、結局これは(タイトルにも書いたとおり)Visual Studio の SP1 が原因だったようです。コンパイルできなくなっていることに気づく数日前に、Windows UpdateでVisual Studio 2010 Service Pack 1というのが来ていたのであまりよく考えずに適用したのですが、これが敗因でした。
Visual C++ Expressには32ビット版のコンパイラしか入っていないのですが、Windows SDKには、Visual C++のコンパイラ本体がフルセット(32ビット、x64、Itanium)含まれていて、だから、Windows SDK入れるとVisual C++ Expressでx64コンパイルができるようになるわけです。Visual Studio 2010 SP1は、C++コンパイラ本体も更新するのですが、どういうわけか、Visual C++ Expressに含まれる 32 ビットコンパイラだけを更新し、Windows SDKがインストールしたx64コンパイラは更新せずに放置する様子。このためx64コンパイラのバージョンが合わなくなっていたのでした。
売り物のVisual Studioにはx64用のコンパイラが入っていて、SP1は当然そのコンパイラは更新するはず。Expressの環境ではx64コンパイラがインストールされていても更新しないというのは、嫌がらせの域ですね。
最悪だったのは、VS SP1のアンインストールができないこと。
コントロールパネルからVisual Studio 2010 SP1 のアンインストールを選ぶことはできるのですが、ダイアログが出て「SP1をアンインストールすると、Visual Studioが起動できなくなって、SP1の再インストールもできなくなるけど、いいですか?」みたいなことを言われて。
そんなの、いいわけがない。
一瞬目の前が真っ暗になりましたが、System Restore(システムの復元)を使ってSP1適用前まで戻すことで、なんとか復旧できました。
マイクロソフトから何か対策が出ると信じて、SP1は適用せずに待つしかなさそうです。


最近のコメント