解説

インサイド .NET Framework [改訂版]

第4回 アセンブリとバージョン管理

吉松 史彰
2003/07/16

Page1 Page2 Page3 Page4 Page5

アプリケーションの修復

 ここまでに解説した何らかの方法でバージョン・リダイレクトが行われた結果、アプリケーションに不具合が発生した場合、ユーザーがアプリケーションの構成ファイルを書いてバージョン・リダイレクト先を修正すれば、アプリケーションが参照するアセンブリのバージョンを直すことができる。また、発行者ポリシーの適用結果としてアプリケーションの動きがおかしくなった場合は、発行者ポリシーを適用しないように構成ファイルに書けばよい。しかし、これらの作業を一般のユーザーに任せるのは少し酷である。

 そこで、.NET Frameworkにはアプリケーションの修復機能がウィザードとして提供されている。このウィザードは、Microsoft .NET Framework Configurationと同じく管理ツールの中にある[Microsoft .NET Framework 1.1 ウィザード]である。

.NETウィザードの起動画面
管理ツールの中にある[Microsoft .NET Framework 1.1 ウィザード]を起動する。

 このツールはMMCベースではないので、Windows 9x系のマシンでも動作する。ウィザードを起動すると、3つのアイコンが表示される。この中の[アプリケーションの修正]をクリックすると、やはりこれまでに実行したアプリケーションが一覧表示される。

アプリケーションの選択画面
.NETウィザードで[アプリケーションの修正]を選択すると、これまでに実行したアプリケーションが一覧表示される

 ここで修復したいアプリケーションを選択して[OK]ボタンをクリックすると、直前のバージョンに戻すように促す次のような画面が表示される。

修復確認の画面
アプリケーションを直前のバージョンに戻す場合には[OK]をクリックする。[詳細]をクリックすると別のバージョンに修復することもできる。

 それでよければここで[OK]ボタンをクリックすればいいし、もっと前に戻したい場合は、[詳細]ボタンをクリックすれば細かいバージョンの履歴が日付範囲の形で表示される。

復元ポイントの選択画面
アプリケーションの細かいバージョン履歴が日付範囲の形で表示される。

 この画面で、アプリケーションを使っていて最も幸せだった日を思い出し、それを設定すればその時点のバージョンの依存アセンブリを使うように構成ファイルが自動的に変更されるのだ。

 上の画面のような履歴リストを表示するために、.NET Frameworkではアプリケーションが終了したときの情報を次のフォルダにアプリケーションごとのログとして記録している。

C:\Documents and Settings
  \ユーザー名
    \Local Settings
      \Application Data
        \ApplicationHistory

 バージョン・リダイレクトによって参照先のアセンブリが変更されると、このフォルダの中のiniファイルにエントリが追加され、いつでも元に戻せるようになっている。このように、欠陥のあるバージョンアップからできる限りユーザーを保護する機能が、.NET Framework自体に備わっているのだ。

 ちなみに、この修復作業もWindows NT系のマシンの場合はMicrosoft .NET Framework Configuration管理ツールで行うこともできる。[アプリケーション]ノードを展開して、修復したいアプリケーションを右クリックし、メニューから[アプリケーションの修正]を選択すればよい。

今回のまとめ

 .NET Frameworkには、組み込みのバージョン管理機能がある。これによって従来のDLL地獄を打破し、新旧のアセンブリが問題なく共存できる環境を作っている。.NET Frameworkのバージョン管理機能の基本はサイドバイサイド実行である。これによって、参照しているアセンブリのバージョンが変わっても、アプリケーションは自分がデバッグされ、テストされたときと同じアセンブリを使い続けることができる。開発者が完全に互換性のある新バージョンを提供したときは、それを使って新しい機能を利用することも可能だ。その場合は、アプリケーションの構成ファイルを書いたり、開発者が発行者ポリシーを提供したりできる。さらに、このようなバージョン・リダイレクト機能はいつでも元に戻すことができる。ユーザーは新しいバージョンが気に入らなければ、前のバージョンを引き続き使うことができるのだ。

 さて、次回はアセンブリのロード時に行われるセキュリティ関連の機能を紹介しよう。まず手始めに、.NET Framework向けに作られたEXEアプリケーションがダブルクリックされたときに、どのように起動されるのか、その手順から解説する。End of Article


 INDEX
  解説 インサイド .NET Framework [改訂版]
  第4回 アセンブリとバージョン管理
    1.アセンブリのサイドバイサイド実行
    2.バージョン・ポリシーによるバージョン・リダイレクト
    3.バージョン・ポリシーの適用順
    4..NET Framework Configuration管理ツール
  5.アプリケーションの修復
 
インデックス・ページヘ  「解説:インサイド .NET Framework [改訂版]」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間