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 namespace System::Reflection;
static void Display(Int32 indent, String^ format, ... array<Object^>^param)
Console::Write("{0}", gcnew String (' ', indent));
Console::WriteLine(format, param);
// Displays the custom attributes applied to the specified member.
static void DisplayAttributes(Int32 indent, MemberInfo^ mi)
// Get the set of custom attributes; if none exist, just return.
array<Object^>^attrs = mi->GetCustomAttributes(false);
if (attrs->Length==0)
return;
// Display the custom attributes applied to this member.
Display(indent+1, "Attributes:");
for each ( Object^ o in attrs )
Display(indent*2, "{0}", o);
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 = System::Reflection::Assembly::GetExecutingAssembly();
Display(indent, "Assembly identity={0}", gcnew array<Object^> {a->FullName});
Display(indent+1, "Codebase={0}", gcnew array<Object^> {a->CodeBase});
// Display the set of assemblies our assemblies reference.
Display(indent, "Referenced assemblies:");
for each ( AssemblyName^ an in a->GetReferencedAssemblies() )
Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", gcnew array<Object^> {an->Name, an->Version, an->CultureInfo, (BitConverter::ToString(an->GetPublicKeyToken()))});
Display(indent, "");
// Display information about each assembly loading into this AppDomain.
for each ( Assembly^ b in AppDomain::CurrentDomain->GetAssemblies())
Display(indent, "Assembly: {0}", gcnew array<Object^> {b});
// Display information about each module of this assembly.
for each ( Module^ m in b->GetModules(true) )
Display(indent+1, "Module: {0}", gcnew array<Object^> {m->Name});
// Display information about each type exported from this assembly.
indent += 1;
for each ( Type^ t in b->GetExportedTypes() )
Display(0, "");
Display(indent, "Type: {0}", gcnew array<Object^> {t});
// For each type, show its members & their custom attributes.
indent += 1;
for each (MemberInfo^ mi in t->GetMembers() )
Display(indent, "Member: {0}", gcnew array<Object^> {mi->Name});
DisplayAttributes(indent, mi);
// If the member is a method, display information about its parameters.
if (mi->MemberType==MemberTypes::Method)
for each ( ParameterInfo^ pi in (((MethodInfo^) mi)->GetParameters()))
Display(indent+1, "Parameter: Type={0}, Name={1}", gcnew array<Object^> {pi->ParameterType, pi->Name});
// If the member is a property, display information about the property's accessor methods.
if (mi->MemberType==MemberTypes::Property)
for each ( MethodInfo^ am in (((PropertyInfo^) mi)->GetAccessors()) )
Display(indent+1, "Accessor method: {0}", gcnew array<Object^> {am});
// Display a formatted string indented by the specified amount.
indent -= 1;
indent -= 1;
catch (Exception^ e)
Console::WriteLine(e->Message);
// 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()
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))
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)
' 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)
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)
End If
indent -= 1
indent -= 1
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())
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物件包含元件的相關信息,可用來系結至該元件。 元件的身分識別包含下列各項:
簡單名稱。
版本號碼。
密碼編譯金鑰組。
支援的文化特性。
簡單名稱通常是指令清單檔的檔名,沒有擴展名。 密鑰組包含公用和私鑰,用來建立元件的強名稱簽章。
所有支援 Common Language Runtime 的編譯程式都會發出巢狀類別的簡單名稱,而反映會根據下列慣例在查詢時建構管理的名稱。
IncludeClass+NestedClass,MyAssembly
“++” 會變成 “\+\+”,而 “\” 會變成 “\\”。
這個限定名稱可以儲存,稍後用來載入 Type。 若要搜尋並載入 Type,請只搭配類型名稱或元件限定型別名稱使用 GetType 。
GetType 具有型別名稱的 只會在呼叫端的元件中尋找 Type ,然後在 [系統] 元件中尋找 。
GetType 具有元件限定型別名稱的 ,將會在任何元件中尋找 Type 。
完整指定 AssemblyName 必須具有名稱、文化特性、公鑰或公鑰令牌、主要版本、次要版本、組建編號和修訂編號參數。 最後四個封裝在 Version 類型中。
若要建立簡單名稱,請使用無參數建構函式建立 AssemblyName 物件,並設定 Name。 其他屬性是選擇性的。
若要建立完整的強名稱,請使用無參數建構函式建立 AssemblyName 物件,並設定 Name 和 KeyPair。 其他屬性是選擇性的。 使用 SetPublicKey 和 SetPublicKeyToken 來設定公鑰和強名稱。 強名稱簽署一律使用 SHA1 哈希演算法。
若要確保正確建構名稱,請使用下列屬性:
Assembly.FullName
AssemblyName.FullName
Type.AssemblyQualifiedName
您也可以搭配 /lGacutil.exe (全域程式集緩存工具使用 選項來取得名稱)
若為部分指定的強名稱,請使用無參數建構函式建立 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 哈希演算法所產生的公鑰哈希值的十六進位編碼低序 64 位,以及所 SetPublicKey指定的公鑰。
PublicKeyToken 是 所 SetPublicKey指定的十六進位編碼公鑰。
十六進位編碼定義為將二進位物件的每個位元組轉換成兩個十六進位位元元,從最小到最重要的位元組。 系統會視需要新增其他顯示值。
如果已知完整的公鑰,則 PublicKey 可能會取代 StrongName。
另請注意,除了 Name必須先出現 ,參數的語彙順序並不重要。 不過,任何參數 (Version、 CultureStrongName 或 PublicKey) 未特別設定,都會被視為省略,然後將 AssemblyName 視為部分。 指定部分資訊時,必須依上述順序指定 Name 參數。
提供顯示名稱時,慣例 StrongName =null 或 PublicKey= null 表示只需要對具名元件進行系結和比對。 此外,表示空字串的慣例 Culture= "" (雙引號,) 表示與預設文化特性相符。
下列範例示範 AssemblyName 具有預設文化特性之簡單具名元件的 。
ExampleAssembly, Culture=""
下例顯示具有 "en" 文化特性之強式名稱組件的完整指定參考。
ExampleAssembly, Version=1.0.0.0, Culture=en, PublicKeyToken=a5d015c7d5a0b012