global assembly cacheとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework用語 > global assembly cacheの意味・解説 

グローバル アセンブリ キャッシュ (GAC) [global assembly cache (GAC)]


グローバル アセンブリ キャッシュ

(global assembly cache から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/02/16 13:56 UTC 版)

グローバル アセンブリ キャッシュ (: Global Assembly Cache略称GAC) は、マイクロソフト仕様の共通言語基盤 (: Common Language Infrastructure、略称:CLI) においてのコンピューター全域で共有されるCLIアセンブリキャッシュである。

グローバルアセンブリキャッシュは中央リポジトリで特別に管理されており、そのようなアプローチはDLL地獄のような欠点につながった共有ライブラリの概念の欠陥に伴う落とし穴を避けるために有効である。

必須要件

GAC内のアセンブリは異なるコード バージョン間でのサイド バイ サイド実行を可能にする特定のバージョン管理スキームに従う必要がある。具体的には、このようなアセンブリは厳密に命名されている必要がある。

使用法

GACを使用するには基本的に2つの方法があり、それらはグローバル アセンブリ キャッシュ ツール (gacutil.exe) と、アセンブリ キャッシュ ビューアー (shfusion.dll) である。

グローバル アセンブリ キャッシュ ツール

"gacutil.exe" は.NET 1.1に搭載され、また.NET SDKで引き続き使用されている、古いコマンドライン ユーティリティである[1]

下記のコマンドを使用してGAC内の共有アセンブリの可用性をチェックできる。

gacutil.exe /l <assemblyName>

GACに共有アセンブリを登録するには下記のコマンドを使用する。

gacutil.exe /i <assemblyName>

もしくは下記の場所に共有アセンブリをコピーする[注釈 1]

%WinDir%\assembly\

ただし.NET 4以降のGACの場所は下記であることに注意されたい。

%WinDir%\Microsoft.NET\assembly\

その他のオプションについては、下記のように"/?"コマンドラインオプションフラグを使用すると簡易的に説明される。

gacutil.exe /?

アセンブリ キャッシュ ビューアー

アセンブリ キャッシュ ビューアーは新たなインターフェイスとしてWindowsエクスプローラーに統合されている[2]

"%WinDir%\assembly\" または "%WinDir%\Microsoft.NET\assembly\" を参照すると、キャッシュに格納されているアセンブリが、それらのバージョン、カルチャー、公開キー トークン、およびプロセッサ アーキテクチャと共に表示される。アセンブリはドラッグ アンド ドロップによりインストールされ、選択しDeleteキーを押すかまたはコンテキスト メニューを使用してアンインストールされる。なお.NET Framework 4の導入により、アセンブリ キャッシュ ビューアーのシェル拡張機能は廃止された[1]

活用例

1つのコンピューターに"AssemblyA"と名付けられた2つのCLIアセンブリがあり、 1つはバージョン1.0、もう1つはバージョン2.0とする。それらは両方とも"AssemblyA"としてコンパイルされることが必要だが、ファイル名が同じなために双方が1つのFAT32ファイル システム上の同じディレクトリに存在することはできない。代わりにプログラムはGACの仮想ファイル システムを使用し、それぞれに必要なバージョンのアセンブリを使用することができる。

実装

コンストラクト[要説明]としてのGACはWindows OS内には実在しない。GACはCLIによって実装され管理されている。"%SystemRoot%" 内の "assembly" と名付けられたフォルダーおよび "Microsoft.NET\assembly" (.NET 4以降) フォルダーには、アセンブリのバージョンおよび公開キー トークンが参照できるよう、マネージドファイル名を持ったグローバルに使用できるアセンブリのすべてが含まれている。これによって各バージョンのアセンブリが同じフォルダー内に存在することができ、以降のバージョンは通常のようにコードのエントリ ポイントの場所の保存をせずとも呼び出されることができる。Windowsエクスプローラーは、コマンドラインからのインストールが許可されない場合にのみ、このフォルダーにドラッグ アンド ドロップ インストールを行う。呼び出し元のアプリケーションは、参照時にアセンブリのバージョンを指定し、実行時には単にファイル名を指定することで、正しいバージョンのアセンブリを使用することができる。

落とし穴

グローバル アセンブリ キャッシュ メカニズムはかつてのDLL地獄を避けるために役立つが、いまだにいくつかの欠点がある。例えば下記のようなものが挙げられる[2]

  • 既定では、アプリケーションはそのコンパイルに使用された.NET Frameworkのバージョンでのみ実行可能なので、.NET Frameworkの新しいバージョンがインストールされたマシン上でアプリケーションが失敗する可能性がある(たとえアプリケーションが新しいバージョンとともに適切に通常実行されるであろう場合であっても)。
  • (アプリケーションで使用する) コア.NETの呼び出しがいくつかのバージョンのみでサポートされている場合、条件付きコンパイルを使用する必要がある。
  • GACメカニズムであっても、ネイティブ コードに依存する.NETアプリケーションは、非互換性のリスクがある。
  • GACに追加されているすべてのアセンブリは厳密に命名されている必要がある。だがアセンブリの「厳密な名前」を作るプロセスはいくつかの状況下では非常に困難な作業になる。たとえば、アセンブリが厳密に命名されていない別のアセンブリに依存する場合、GACには登録できない。厳密に命名されていないサード パーティ アセンブリのコードをプログラマが所有していない場合、厳密な名前に変換することは現実的には不可能である。
  • 標準のWindows APIを使用したファイル参照では、エクスプローラーがGACのユーザーフレンドリービューを表示しているとき "assembly" フォルダーの下にあるDLLの選択は許されていない。

脚注

注釈

  1. ^ 環境変数"%WinDir%"はシステム環境に応じて"C:\Windows"などに展開される。

出典

  1. ^ a b How to: View the Contents of the Global Assembly Cache”. マイクロソフト. 2010年7月22日閲覧。
  2. ^ a b John, Mueller (2005年2月11日). “Ten Managed Application Pitfalls that Kill Version Compatibility”. devsource.com. 2008年1月26日閲覧。

外部リンク


「Global Assembly Cache」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「global assembly cache」の関連用語

global assembly cacheのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



global assembly cacheのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのグローバル アセンブリ キャッシュ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS