「Androidは電気羊の夢を見るか」を読みたい管理者のブログ

仕事などでの色々な発見を記事にしてます。不定期更新。

Side-by-Sideとは

issue:VC++2008で作成した64bitアプリケーションの起動に失敗する

Msg:このアプリケーションのサイドバイサイド構成が正しくないため、アプリケーションを開始できませんでした。詳細については、アプリケーションのイベントログを参照するか、コマンドラインツールsxstrace.exeを使用してください。

 原因:不明

対処:Visual Studio 2008 SP1を入れたら改善された

SP1インストール時にx64のランタイムも一緒に入れたからだと思われる

 

以下、お勉強

 

分離アプリケーションとSide-by-Sideアセンブリ (Isolated Applications and Side-by-side Assemblies)とは、Windows XPで導入された複数バージョンのソフトウェアコンポーネントの衝突を避けるための仕組みである。システム上に複数バージョンのコンポーネント共存させ、アプリケーションごとに適切なバージョンのコンポーネントを選択可能にすることで、DLL地獄の解消を意図している。.NET Frameworkにおけるバージョン管理の仕組みをWindowsネイティブに持ち込んだものという見方もできる。

分離アプリケーションとSide-by-Sideアセンブリ - Wikipedia

 

簡単にいえば、マニフェストが、「HeyYou,おいらを実行したいときはこのDLLを参照してくれよな!」とOSに知らせる仕組みらしい。

で、そのDLLとは何か。この場合はランタイムと呼ばれる実行モジュールだったようだ。その昔、VB6ランタイムを入れさせられた。なつかしい。

VC++2008ランタイムは、VC++2008で開発されたアプリケーションを実行するのに必要になってくる。なぜか私は途中まで.NETと混同していて、なぜ単純なhello worldなのに.NETが絡んでくるのだろうと思っていたのは余談。