この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "アセンブリ" 共通言語基盤
共通言語基盤においてアセンブリ (assembly) とはコンパイルされたコードライブラリのことであり、配置・バージョン管理・セキュリティ管理の単位となる。 Windowsの.NET Frameworkの実装においては、アセンブリはPE形式ファイルである。アセンブリにはプロセスアセンブリ (EXE) とライブラリアセンブリ (DLL) の二種類がある。CLR 1.1においてはクラスの外部への公開はライブラリアセンブリでのみ可能だったが、CLR 2.0ではこの制限は緩和された。.NETはアセンブリがプロセスかライブラリかを判断するのに拡張子ではなく内部に設定されたフラグを用いる。従って、ライブラリアセンブリが.exeの拡張子をもつことも可能である。 アセンブリに格納されるコードはコンパイルされてCILの形をとっており、実行時には仮想実行システム (VES) によって実行される。 アセンブリは、1つ以上のファイルからなり、アセンブリ自身を表すマニフェストや実行コード、リソースなどが含まれる。コードファイルはモジュールと呼ばれ、アセンブリは1つ以上のモジュールを含む。モジュールの作成にはさまざまな言語が使用でき、1つのアセンブリを作成するのに複数のプログラミング言語を使用することも技術的に可能である。ただし、Visual Studioは1つのモジュールを含むアセンブリしか作成できず、これは稀である。 アセンブリ名は4つの部分からなる。 公開キートークンはアセンブリ名の重複を防ぐために使われる。従って、2つのアセンブリが同じファイル名であった場合でも.NETは両者を区別することができる。しかし、Windowsのファイルシステムはファイル名しか認識できないため、同じ短縮名をもつアセンブリを同じフォルダに置くことはできない。これを解決するために、.NETはGAC (グローバル アセンブリ キャッシュ) という仕組みを用意している。これによって、複数のフォルダに置いたアセンブリをCLRにとっては同じフォルダにあるものとして認識することができる。 アセンブリの偽装攻撃を防ぐために、アセンブリは秘密キーで署名される。アセンブリに署名する際、アセンブリの重要な部分のハッシュをとりそれを秘密キーで暗号化する。このハッシュは公開キーとともにアセンブリ内に格納される。CLRが厳密名で指定されたアセンブリをロードする際、暗号化されたハッシュを公開キーで復号し、それをアセンブリのハッシュと比較する。それらが一致した場合、アセンブリに格納された公開キーは署名に使われた秘密キーに対応するものだということになる。 一般に、アセンブリはニュートラルカルチャのリソースのみを含んでいるべきである。アセンブリをローカライズしたい場合(例えばロケールによって異なった文字列を参照したい場合)、サテライトアセンブリを使う。サテライト (英: satellite) とは「衛星」あるいは「従者」の意味であり、サテライトアセンブリはリソースのみを含む特殊なアセンブリである。サテライトアセンブリはFusion(後述)によってロードされないので、コードを含めるべきではない。その名前が示すように、サテライトアセンブリはメインアセンブリと呼ばれるアセンブリに関連付けられる。各サテライトアセンブリは、メインアセンブリ名の末尾に「.resources」を付加した名前をもつ。例えば、メインアセンブリが「lib.dll」であれば、サテライトアセンブリは「lib.resources.dll」となる。サテライトアセンブリは非ニュートラルカルチャをもつが、Windowsのファイルシステムはこれを認識することはできないので、異なるカルチャをもつサテライトアセンブリを作成するとファイル名が重複してしまう。
概要
アセンブリ名
短縮名
WindowsにおいてはこれはPEファイル名から拡張子を除いたものに等しい。
カルチャ
これは.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation.cs-ja1 q,.mw-parser-output .citation.cs-ja2 q{quotes:"「""」""『""』"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:#d33}.mw-parser-output .cs1-visible-error{color:#d33}.mw-parser-output .cs1-maint{display:none;color:#3a3;margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}RFC 1766
バージョン
これは4つの数値(MajorVersion、MinorVersion、BuildNumber、Revision)をドット (.)で連結したものである[1]。
公開キートークン
これはアセンブリに署名された秘密鍵に対応する公開鍵の64ビットハッシュである。公開キートークンが指定されたアセンブリ名を厳密名という。
サテライトアセンブリ