アセンブリ_(共通言語基盤)とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > アセンブリ_(共通言語基盤)の意味・解説 

アセンブリ (共通言語基盤)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/08 14:52 UTC 版)

ナビゲーションに移動 検索に移動

共通言語基盤においてアセンブリ (assembly) とはコンパイルされたコードライブラリのことであり、配置・バージョン管理・セキュリティ管理の単位となる。

概要

Windows.NET Frameworkの実装においては、アセンブリはPE形式ファイルである。アセンブリにはプロセスアセンブリ (EXE) とライブラリアセンブリ (DLL) の二種類がある。CLR 1.1においてはクラスの外部への公開はライブラリアセンブリでのみ可能だったが、CLR 2.0ではこの制限は緩和された。.NETはアセンブリがプロセスかライブラリかを判断するのに拡張子ではなく内部に設定されたフラグを用いる。従って、ライブラリアセンブリが.exeの拡張子をもつことも可能である。

アセンブリに格納されるコードはコンパイルされてCILの形をとっており、実行時には仮想実行システム (VES) によって実行される。

アセンブリは、1つ以上のファイルからなり、アセンブリ自身を表すマニフェストや実行コード、リソースなどが含まれる。コードファイルはモジュールと呼ばれ、アセンブリは1つ以上のモジュールを含む。モジュールの作成にはさまざまな言語が使用でき、1つのアセンブリを作成するのに複数のプログラミング言語を使用することも技術的に可能である。ただし、Visual Studioは1つのモジュールを含むアセンブリしか作成できず、これは稀である。

アセンブリ名

アセンブリ名は4つの部分からなる。

短縮名
WindowsにおいてはこれはPEファイル名から拡張子を除いたものに等しい。
カルチャ
これはRFC 1766(IETF言語タグ)に規定されたロケールの識別子である。一般に、プロセスアセンブリとライブラリアセンブリはニュートラルカルチャであるべきであり、カルチャはサテライトアセンブリでのみ使用されるべきである。
バージョン
これは4つの数値(MajorVersion、MinorVersion、BuildNumber、Revision)をドット (.)で連結したものである[1]
公開キートークン
これはアセンブリに署名された秘密鍵に対応する公開鍵の64ビットハッシュである。公開キートークンが指定されたアセンブリ名を厳密名という。

公開キートークンはアセンブリ名の重複を防ぐために使われる。従って、2つのアセンブリが同じファイル名であった場合でも.NETは両者を区別することができる。しかし、Windowsのファイルシステムはファイル名しか認識できないため、同じ短縮名をもつアセンブリを同じフォルダに置くことはできない。これを解決するために、.NETはGAC (グローバル アセンブリ キャッシュ) という仕組みを用意している。これによって、複数のフォルダに置いたアセンブリをCLRにとっては同じフォルダにあるものとして認識することができる。

アセンブリの偽装攻撃を防ぐために、アセンブリは秘密キーで署名される。アセンブリに署名する際、アセンブリの重要な部分のハッシュをとりそれを秘密キーで暗号化する。このハッシュは公開キーとともにアセンブリ内に格納される。CLRが厳密名で指定されたアセンブリをロードする際、暗号化されたハッシュを公開キーで復号し、それをアセンブリのハッシュと比較する。それらが一致した場合、アセンブリに格納された公開キーは署名に使われた秘密キーに対応するものだということになる。

サテライトアセンブリ

一般に、アセンブリはニュートラルカルチャのリソースのみを含んでいるべきである。アセンブリをローカライズしたい場合(例えばロケールによって異なった文字列を参照したい場合)、サテライトアセンブリを使う。サテライト (: satellite) とは「衛星」あるいは「従者」の意味であり、サテライトアセンブリはリソースのみを含む特殊なアセンブリである。サテライトアセンブリはFusion(後述)によってロードされないので、コードを含めるべきではない。その名前が示すように、サテライトアセンブリはメインアセンブリと呼ばれるアセンブリに関連付けられる。各サテライトアセンブリは、メインアセンブリ名の末尾に「.resources」を付加した名前をもつ。例えば、メインアセンブリが「lib.dll」であれば、サテライトアセンブリは「lib.resources.dll」となる。サテライトアセンブリは非ニュートラルカルチャをもつが、Windowsのファイルシステムはこれを認識することはできないので、異なるカルチャをもつサテライトアセンブリを作成するとファイル名が重複してしまう。これを防ぐために、サテライトアセンブリはアプリケーションフォルダ下のカルチャ別のフォルダに格納される。例えば英国英語のカルチャをもつサテライトアセンブリが「lib.resources Version=0.0.0.0 Culture=en-GB PublicKeyToken=null」という名称だったとすると、ファイル「lib.resources.dll」は「en-GB」というサブフォルダに格納される。

サテライトアセンブリはSystem.Resources.ResourceManagerクラスによってロードされる。リソースを取り出すために、開発者はメインアセンブリの情報とリソースの名称を提供しなければならない。ResourceManagerクラスは実行環境のロケールを読み取り、その情報とメインアセンブリ名からサテライトアセンブリ名とそれが格納されたサブフォルダ名を取得する。そしてそこからサテライトアセンブリをロードし、ローカライズされたリソースを取得する。

Fusion

Windowsのファイルシステムはアセンブリのバージョンやカルチャの情報を認識することができない。つまり、同じ名前でバージョンだけが異なるアセンブリを1つのフォルダに格納することができない。

Fusionはバージョンやカルチャといった情報をファイルシステム上の名前として使用できるようにするための技術である。 Fusionはアセンブリを検索する際、決まった順序に沿って検索を行う。

  1. アセンブリが厳密名であれば、まずグローバル アセンブリ キャッシュを検索する。
  2. Fusionは次に、アプリケーションの設定ファイルのリダイレクト情報を見る。アセンブリが厳密名であれば、他のバージョンをロードするよう指定したり、ローカルファイルシステム上やウェブサーバ上のアセンブリを絶対パスで指定したりすることができる。アセンブリが厳密名でなければ、アプリケーションフォルダ以下のサブフォルダを検索パスとして指定することができる。
  3. Fusionは次にアプリケーションフォルダ内の.exe.dllの拡張子をもつアセンブリを検索する。
  4. Fusionは次にアセンブリの短縮名と同じ名前をもつサブフォルダ内にある.exeおよび.dllファイルを検索する。

もしこれでもアセンブリを見つけることができなかった場合、Fusionは例外を投げる。さらに、アセンブリ名やFusionが検索したパスなどの情報が保存される。この情報はFusionログビューワ (fuslogvw) で確認できる。

脚注

[脚注の使い方]

関連項目


「アセンブリ (共通言語基盤)」の例文・使い方・用例・文例

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


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

辞書ショートカット

すべての辞書の索引

「アセンブリ_(共通言語基盤)」の関連用語

アセンブリ_(共通言語基盤)のお隣キーワード
検索ランキング

   

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



アセンブリ_(共通言語基盤)のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
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