AssemblyName クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
アセンブリの一意の ID を完全に記述します。
public ref class AssemblyName sealed
public ref class AssemblyName sealed : ICloneable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public ref class AssemblyName sealed : ICloneable, System::Runtime::InteropServices::_AssemblyName, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public sealed class AssemblyName
public sealed class AssemblyName : ICloneable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public sealed class AssemblyName : ICloneable, System.Runtime.InteropServices._AssemblyName, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AssemblyName : ICloneable, System.Runtime.InteropServices._AssemblyName, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type AssemblyName = class
type AssemblyName = class
interface ICloneable
interface IDeserializationCallback
interface ISerializable
type AssemblyName = class
interface ICloneable
interface ISerializable
interface IDeserializationCallback
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type AssemblyName = class
interface _AssemblyName
interface ICloneable
interface ISerializable
interface IDeserializationCallback
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AssemblyName = class
interface _AssemblyName
interface ICloneable
interface ISerializable
interface IDeserializationCallback
Public NotInheritable Class AssemblyName
Public NotInheritable Class AssemblyName
Implements ICloneable, IDeserializationCallback, ISerializable
Public NotInheritable Class AssemblyName
Implements _AssemblyName, ICloneable, IDeserializationCallback, ISerializable
- 継承
-
AssemblyName
- 属性
- 実装
例
この例では、さまざまなリフレクション クラスを使用して、アセンブリに含まれるメタデータを分析する方法を示します。
using System;
using System.Reflection;
class Module1
{
public static void Main()
{
// This variable holds the amount of indenting that
// should be used when displaying each line of information.
Int32 indent = 0;
// Display information about the EXE assembly.
Assembly a = typeof(Module1).Assembly;
Display(indent, "Assembly identity={0}", a.FullName);
Display(indent+1, "Codebase={0}", a.CodeBase);
// Display the set of assemblies our assemblies reference.
Display(indent, "Referenced assemblies:");
foreach (AssemblyName an in a.GetReferencedAssemblies() )
{
Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", an.Name, an.Version, an.CultureInfo.Name, (BitConverter.ToString (an.GetPublicKeyToken())));
}
Display(indent, "");
// Display information about each assembly loading into this AppDomain.
foreach (Assembly b in AppDomain.CurrentDomain.GetAssemblies())
{
Display(indent, "Assembly: {0}", b);
// Display information about each module of this assembly.
foreach ( Module m in b.GetModules(true) )
{
Display(indent+1, "Module: {0}", m.Name);
}
// Display information about each type exported from this assembly.
indent += 1;
foreach ( Type t in b.GetExportedTypes() )
{
Display(0, "");
Display(indent, "Type: {0}", t);
// For each type, show its members & their custom attributes.
indent += 1;
foreach (MemberInfo mi in t.GetMembers() )
{
Display(indent, "Member: {0}", mi.Name);
DisplayAttributes(indent, mi);
// If the member is a method, display information about its parameters.
if (mi.MemberType==MemberTypes.Method)
{
foreach ( ParameterInfo pi in ((MethodInfo) mi).GetParameters() )
{
Display(indent+1, "Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name);
}
}
// If the member is a property, display information about the property's accessor methods.
if (mi.MemberType==MemberTypes.Property)
{
foreach ( MethodInfo am in ((PropertyInfo) mi).GetAccessors() )
{
Display(indent+1, "Accessor method: {0}", am);
}
}
}
indent -= 1;
}
indent -= 1;
}
}
// Displays the custom attributes applied to the specified member.
public static void DisplayAttributes(Int32 indent, MemberInfo mi)
{
// Get the set of custom attributes; if none exist, just return.
object[] attrs = mi.GetCustomAttributes(false);
if (attrs.Length==0) {return;}
// Display the custom attributes applied to this member.
Display(indent+1, "Attributes:");
foreach ( object o in attrs )
{
Display(indent+2, "{0}", o.ToString());
}
}
// Display a formatted string indented by the specified amount.
public static void Display(Int32 indent, string format, params object[] param)
{
Console.Write(new string(' ', indent*2));
Console.WriteLine(format, param);
}
}
//The output shown below is abbreviated.
//
//Assembly identity=ReflectionCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// Codebase=file:///C:/Documents and Settings/test/My Documents/Visual Studio 2005/Projects/Reflection/Reflection/obj/Debug/Reflection.exe
//Referenced assemblies:
// Name=mscorlib, Version=2.0.0.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89
//
//Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
// Module: mscorlib.dll
//
// Type: System.Object
// Member: GetType
// Member: ToString
// Member: Equals
// Parameter: Type=System.Object, Name=obj
// Member: Equals
// Parameter: Type=System.Object, Name=objA
// Parameter: Type=System.Object, Name=objB
// Member: ReferenceEquals
// Attributes:
// System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
// Parameter: Type=System.Object, Name=objA
// Parameter: Type=System.Object, Name=objB
// Member: GetHashCode
// Member: .ctor
// Attributes:
// System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//
// Type: System.ICloneable
// Member: Clone
//
// Type: System.Collections.IEnumerable
// Member: GetEnumerator
// Attributes:
// System.Runtime.InteropServices.DispIdAttribute
//
// Type: System.Collections.ICollection
// Member: CopyTo
// Parameter: Type=System.Array, Name=array
// Parameter: Type=System.Int32, Name=index
// Member: get_Count
// Member: get_SyncRoot
// Member: get_IsSynchronized
// Member: Count
// Accessor method: Int32 get_Count()
// Member: SyncRoot
// Accessor method: System.Object get_SyncRoot()
// Member: IsSynchronized
// Accessor method: Boolean get_IsSynchronized()
//
// Type: System.Collections.IList
// Member: get_Item
// Parameter: Type=System.Int32, Name=index
// Member: set_Item
// Parameter: Type=System.Int32, Name=index
// Parameter: Type=System.Object, Name=value
// Member: Add
// Parameter: Type=System.Object, Name=value
// Member: Contains
// Parameter: Type=System.Object, Name=value
// Member: Clear
// Member: get_IsReadOnly
// Member: get_IsFixedSize
// Member: IndexOf
// Parameter: Type=System.Object, Name=value
// Member: Insert
// Parameter: Type=System.Int32, Name=index
// Parameter: Type=System.Object, Name=value
// Member: Remove
// Parameter: Type=System.Object, Name=value
// Member: RemoveAt
// Parameter: Type=System.Int32, Name=index
// Member: Item
// Accessor method: System.Object get_Item(Int32)
// Accessor method: Void set_Item(Int32, System.Object)
// Member: IsReadOnly
// Accessor method: Boolean get_IsReadOnly()
// Member: IsFixedSize
// Accessor method: Boolean get_IsFixedSize()
//
// Type: System.Array
// Member: IndexOf
// Parameter: Type=T[], Name=array
// Parameter: Type=T, Name=value
// Member: AsReadOnly
// Parameter: Type=T[], Name=array
// Member: Resize
// Attributes:
// System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
// Parameter: Type=T[]&, Name=array
// Parameter: Type=System.Int32, Name=newSize
// Member: BinarySearch
// Attributes:
// System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
// Parameter: Type=T[], Name=array
// Parameter: Type=T, Name=value
// Member: BinarySearch
// Attributes:
// System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
// Parameter: Type=T[], Name=array
// Parameter: Type=T, Name=value
// Parameter: Type=System.Collections.Generic.IComparer`1[T], Name=comparer
Imports System.Reflection
Module Module1
Sub Main()
' This variable holds the amount of indenting that
' should be used when displaying each line of information.
Dim indent As Int32 = 0
' Display information about the EXE assembly.
Dim a As Assembly = GetType(Module1).Assembly
Display(indent, "Assembly identity={0}", a.FullName)
Display(indent + 1, "Codebase={0}", a.CodeBase)
' Display the set of assemblies our assemblies reference.
Dim an As AssemblyName
Display(indent, "Referenced assemblies:")
For Each an In a.GetReferencedAssemblies()
Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", _
an.Name, an.Version, an.CultureInfo.Name, BitConverter.ToString(an.GetPublicKeyToken))
Next
Display(indent, "")
' Display information about each assembly loading into this AppDomain.
For Each a In AppDomain.CurrentDomain.GetAssemblies()
Display(indent, "Assembly: {0}", a)
' Display information about each module of this assembly.
Dim m As [Module]
For Each m In a.GetModules(True)
Display(indent + 1, "Module: {0}", m.Name)
Next
' Display information about each type exported from this assembly.
Dim t As Type
indent += 1
For Each t In a.GetExportedTypes()
Display(0, "")
Display(indent, "Type: {0}", t)
' For each type, show its members & their custom attributes.
Dim mi As MemberInfo
indent += 1
For Each mi In t.GetMembers()
Display(indent, "Member: {0}", mi.Name)
DisplayAttributes(indent, mi)
' If the member is a method, display information about its parameters.
Dim pi As ParameterInfo
If mi.MemberType = MemberTypes.Method Then
For Each pi In CType(mi, MethodInfo).GetParameters()
Display(indent + 1, "Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name)
Next
End If
' If the member is a property, display information about the property's accessor methods.
If mi.MemberType = MemberTypes.Property Then
Dim am As MethodInfo
For Each am In CType(mi, PropertyInfo).GetAccessors()
Display(indent + 1, "Accessor method: {0}", am)
Next
End If
Next
indent -= 1
Next
indent -= 1
Next
End Sub
' Displays the custom attributes applied to the specified member.
Sub DisplayAttributes(ByVal indent As Int32, ByVal mi As MemberInfo)
' Get the set of custom attributes; if none exist, just return.
Dim attrs() As Object = mi.GetCustomAttributes(False)
If attrs.Length = 0 Then Return
' Display the custom attributes applied to this member.
Display(indent + 1, "Attributes:")
Dim o As Object
For Each o In attrs
Display(indent + 2, "{0}", o.ToString())
Next
End Sub
' Display a formatted string indented by the specified amount.
Sub Display(ByVal indent As Int32, ByVal format As String, ByVal ParamArray params() As Object)
Console.Write(New String(" "c, indent * 2))
Console.WriteLine(format, params)
End Sub
End Module
'The output shown below is abbreviated.
'
'Assembly identity=Reflection, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
' Codebase=file:///C:/Reflection.exe
'Referenced assemblies:
' Name=mscorlib, Version=1.0.5000.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89
' Name=Microsoft.VisualBasic, Version=7.0.5000.0, Culture=, PublicKey token=B0-3F-5F-7F-11-D5-0A-3A
'
'Assembly: mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
' Module: mscorlib.dll
' Module: prc.nlp
' Module: prcp.nlp
' Module: ksc.nlp
' Module: ctype.nlp
' Module: xjis.nlp
' Module: bopomofo.nlp
' Module: culture.nlp
' Module: region.nlp
' Module: sortkey.nlp
' Module: charinfo.nlp
' Module: big5.nlp
' Module: sorttbls.nlp
' Module: l_intl.nlp
' Module: l_except.nlp
'
' Type: System.Object
' Member: GetHashCode
' Member: Equals
' Parameter: Type=System.Object, Name=obj
' Member: ToString
' Member: Equals
' Parameter: Type=System.Object, Name=objA
' Parameter: Type=System.Object, Name=objB
' Member: ReferenceEquals
' Parameter: Type=System.Object, Name=objA
' Parameter: Type=System.Object, Name=objB
' Member: GetType
' Member: .ctor
'
' Type: System.ICloneable
' Member: Clone
'
' Type: System.Collections.IEnumerable
' Member: GetEnumerator
' Attributes:
' System.Runtime.InteropServices.DispIdAttribute
'
' Type: System.Collections.ICollection
' Member: get_IsSynchronized
' Member: get_SyncRoot
' Member: get_Count
' Member: CopyTo
' Parameter: Type=System.Array, Name=array
' Parameter: Type=System.Int32, Name=index
' Member: Count
' Accessor method: Int32 get_Count()
' Member: SyncRoot
' Accessor method: System.Object get_SyncRoot()
' Member: IsSynchronized
' Accessor method: Boolean get_IsSynchronized()
'
注釈
AssemblyName オブジェクトには、アセンブリに関する情報が含まれています。この情報を使用して、そのアセンブリにバインドできます。 アセンブリの ID は、次の要素で構成されます。
- 単純な名前。
- バージョン番号。
- 暗号化キーのペア。
- サポートされているカルチャ。
通常、単純な名前は、拡張子のないマニフェスト ファイルのファイル名です。 キー ペアには公開キーと秘密キーが含まれており、アセンブリの厳密な名前の署名を作成するために使用されます。
共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの単純な名前を出力し、リフレクションは、次の規則に従って、クエリ時にマングルされた名前を構築します。
| 区切り記号 | Meaning |
|---|---|
| バックスラッシュ (\) | エスケープ文字。 |
| コンマ (,) | アセンブリ名の前に置きます。 |
| プラス記号 (+) | 入れ子になったクラスの前に置く。 |
たとえば、クラスの完全修飾名は次のようになります。
ContainingClass+NestedClass,MyAssembly
"++" は "\+\+" になり、"\" は "\\" になります。
この修飾名は永続化でき、後で Typeを読み込むのに使用できます。 Typeを検索して読み込むには、型名のみを指定するか、アセンブリ修飾型名でGetTypeを使用します。 GetType 型名を指定すると、呼び出し元のアセンブリ内の Type が検索され、次にシステム アセンブリ内で検索されます。 GetType アセンブリ修飾型名を指定すると、任意のアセンブリ内の Type が検索されます。
完全に指定された AssemblyName には、名前、カルチャ、公開キーまたは公開キー トークン、メジャー バージョン、マイナー バージョン、ビルド番号、およびリビジョン番号のパラメーターが必要です。 最後の 4 つは、 Version 型でパッケージ化されます。
単純な名前を作成するには、パラメーターなしのコンストラクターを使用して AssemblyName オブジェクトを作成し、 Nameを設定します。 その他のプロパティは省略可能です。
完全な厳密な名前を作成するには、パラメーターなしのコンストラクターを使用して AssemblyName オブジェクトを作成し、 Name と KeyPairを設定します。 その他のプロパティは省略可能です。 公開キーと厳密な名前を設定するには、 SetPublicKey と SetPublicKeyToken を使用します。 厳密な名前の署名では、常に SHA1 ハッシュ アルゴリズムが使用されます。
名前が正しく構築されていることを確認するには、次のプロパティを使用します。
Gacutil.exe (グローバル アセンブリ キャッシュ ツール) で /l オプションを使用して名前を取得することもできます。
部分的に指定された厳密な名前の場合は、パラメーターなしのコンストラクターを使用して AssemblyName オブジェクトを作成し、名前と公開キーを設定します。 このような AssemblyName を使用して作成されたアセンブリは、アセンブリ リンカー (Al.exe) を使用して後で署名できます。
公開キーと、一貫性のない値を持つ KeyPair を指定できます。 これは、開発者のシナリオで役立ちます。 この場合、 GetPublicKey で取得された公開キーは正しい公開キーを指定し、 KeyPair は開発中に使用される公開キーと秘密キーを指定します。 ランタイムは、 KeyPair と公開キーの不一致を検出すると、公開キーと一致する正しいキーをレジストリで検索します。
AssemblyNameの表示名の形式は、次のように名前で始まるコンマ区切りの Unicode 文字列です。
Name <,Culture = CultureInfo> <,Version = Major.Minor.Build.Revision> <, StrongName> <,PublicKeyToken> '\0'
Name はアセンブリのテキスト名です。
CultureInfo は、RFC1766形式で定義されたカルチャです。
Major、 Minor、 Build、および Revision は、アセンブリのメジャー バージョン、マイナー バージョン、ビルド番号、およびリビジョン番号です。
StrongName は、SHA-1 ハッシュ アルゴリズムと、 SetPublicKeyで指定された公開キーを使用して生成された公開キーのハッシュ値の 16 進数でエンコードされた下位 64 ビットです。
PublicKeyToken は、 SetPublicKeyで指定された 16 進数でエンコードされた公開キーです。
16 進エンコードは、バイナリ オブジェクトの各バイトから 2 つの 16 進文字への変換として定義され、最下位バイトから最上位バイトに進みます。 必要に応じて、追加の表示値が追加されます。
完全な公開キーがわかっている場合は、PublicKey が StrongName に置き換えられる可能性があります。
また、最初に来る必要がある Nameを除き、パラメーターの字句の順序は重要ではありません。 ただし、特に設定されていないパラメーター (Version、 Culture、 StrongName 、または PublicKey) は省略されると見なされ、 AssemblyName は部分的と見なされます。 部分的な情報を指定する場合は、前述の順序で Name パラメーターを指定する必要があります。
表示名を指定する場合、規則 StrongName =null または PublicKey= null は、単純な名前付きアセンブリに対するバインドと照合が必要であることを示します。 さらに、規則 Culture= "" (空の文字列を表す二重引用符) は、既定のカルチャとの照合を示します。
次の例は、既定のカルチャを持つ単純な名前付きアセンブリの AssemblyName を示しています。
ExampleAssembly, Culture=""
次に、カルチャが "en" の厳密な名前のアセンブリに対する完全に指定された参照の例を示します。
ExampleAssembly, Version=1.0.0.0, Culture=en, PublicKeyToken=a5d015c7d5a0b012
コンストラクター
| 名前 | 説明 |
|---|---|
| AssemblyName() |
AssemblyName クラスの新しいインスタンスを初期化します。 |
| AssemblyName(String) |
指定した表示名を使用して、 AssemblyName クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| CodeBase |
古い.
アセンブリの場所を URL として取得または設定します。 |
| ContentType |
アセンブリに含まれるコンテンツの種類を示す値を取得または設定します。 |
| CultureInfo |
アセンブリでサポートされるカルチャを取得または設定します。 |
| CultureName |
アセンブリに関連付けられているカルチャの名前を取得または設定します。 |
| EscapedCodeBase |
古い.
コードベースを表すエスケープ文字を含む URI を取得します。 |
| Flags |
アセンブリの属性を取得または設定します。 |
| FullName |
アセンブリの完全な名前 (表示名とも呼ばれます) を取得します。 |
| HashAlgorithm |
古い.
アセンブリ マニフェストで使用されるハッシュ アルゴリズムを取得または設定します。 |
| KeyPair |
古い.
アセンブリの厳密な名前署名を作成するために使用される公開と秘密の暗号化キーのペアを取得または設定します。 |
| Name |
アセンブリの単純な名前を取得または設定します。 これは通常、アセンブリのマニフェスト ファイルのファイル名から拡張子を引いた名前ですが、必ずしもそうであるとは限りません。 |
| ProcessorArchitecture |
古い.
実行可能ファイルの対象となるプラットフォームのプロセッサと単語ごとのビット数を識別する値を取得または設定します。 |
| Version |
アセンブリのメジャー、マイナー、ビルド、およびリビジョン番号を取得または設定します。 |
| VersionCompatibility |
古い.
アセンブリの他のアセンブリとの互換性に関連する情報を取得または設定します。 |
メソッド
| 名前 | 説明 |
|---|---|
| Clone() |
この AssemblyName オブジェクトのコピーを作成します。 |
| Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| GetAssemblyName(String) |
特定のファイルの AssemblyName を取得します。 |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
古い.
この |
| GetPublicKey() |
アセンブリの公開キーを取得します。 |
| GetPublicKeyToken() |
公開キー トークンを取得します。これは、アプリケーションまたはアセンブリが署名されている公開キーの SHA-1 ハッシュの最後の 8 バイトです。 |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| OnDeserialization(Object) |
ISerializable インターフェイスを実装し、逆シリアル化が完了すると逆シリアル化イベントによって呼び出されます。 |
| ReferenceMatchesDefinition(AssemblyName, AssemblyName) |
2 つのアセンブリ名が同じかどうかを示す値を返します。 比較は、単純なアセンブリ名に基づいています。 |
| SetPublicKey(Byte[]) |
アセンブリを識別する公開キーを設定します。 |
| SetPublicKeyToken(Byte[]) |
公開キー トークンを設定します。これは、アプリケーションまたはアセンブリが署名されている公開キーの SHA-1 ハッシュの最後の 8 バイトです。 |
| ToString() |
アセンブリの完全な名前 (表示名とも呼ばれます) を返します。 |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| _AssemblyName.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
一連の名前を対応する一連のディスパッチ識別子に割り当てます。 |
| _AssemblyName.GetTypeInfo(UInt32, UInt32, IntPtr) |
オブジェクトの型情報を取得します。この型情報を使用して、インターフェイスの型情報を取得できます。 |
| _AssemblyName.GetTypeInfoCount(UInt32) |
オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。 |
| _AssemblyName.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
オブジェクトによって公開されるプロパティとメソッドへのアクセスを提供します。 |