共用方式為


Assembly 類別

定義

表示元件,這是 Common Language Runtime 應用程式的可重複使用、可版本設定和自我描述的建置組塊。

public ref class Assembly abstract
public ref class Assembly abstract : System::Reflection::ICustomAttributeProvider, System::Runtime::Serialization::ISerializable
public ref class Assembly abstract : System::Reflection::ICustomAttributeProvider
public ref class Assembly : System::Reflection::ICustomAttributeProvider, System::Runtime::InteropServices::_Assembly, System::Runtime::Serialization::ISerializable, System::Security::IEvidenceFactory
public ref class Assembly abstract : System::Reflection::ICustomAttributeProvider, System::Runtime::InteropServices::_Assembly, System::Runtime::Serialization::ISerializable, System::Security::IEvidenceFactory
public abstract class Assembly
public abstract class Assembly : System.Reflection.ICustomAttributeProvider, System.Runtime.Serialization.ISerializable
public abstract class Assembly : System.Reflection.ICustomAttributeProvider
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public class Assembly : System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._Assembly, System.Runtime.Serialization.ISerializable, System.Security.IEvidenceFactory
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Assembly : System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._Assembly, System.Runtime.Serialization.ISerializable, System.Security.IEvidenceFactory
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Assembly : System.Reflection.ICustomAttributeProvider, System.Runtime.InteropServices._Assembly, System.Runtime.Serialization.ISerializable, System.Security.IEvidenceFactory
type Assembly = class
type Assembly = class
    interface ICustomAttributeProvider
    interface ISerializable
type Assembly = class
    interface ICustomAttributeProvider
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type Assembly = class
    interface _Assembly
    interface IEvidenceFactory
    interface ICustomAttributeProvider
    interface ISerializable
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Assembly = class
    interface _Assembly
    interface IEvidenceFactory
    interface ICustomAttributeProvider
    interface ISerializable
Public MustInherit Class Assembly
Public MustInherit Class Assembly
Implements ICustomAttributeProvider, ISerializable
Public MustInherit Class Assembly
Implements ICustomAttributeProvider
Public Class Assembly
Implements _Assembly, ICustomAttributeProvider, IEvidenceFactory, ISerializable
Public MustInherit Class Assembly
Implements _Assembly, ICustomAttributeProvider, IEvidenceFactory, ISerializable
繼承
Assembly
衍生
屬性
實作

範例

下列程式代碼範例示範如何取得目前正在執行的元件、建立包含在該元件中的型別實例,以及使用晚期系結叫用其中一個型別的方法。 為此,程式代碼範例會定義名為 Example的類別,並使用名為 SampleMethod的方法。 類別的建構函式接受整數,用來計算 方法的傳回值。

程式代碼範例也會示範如何使用 GetName 方法來取得可用來剖析元件完整名稱的 AssemblyName 物件。 此範例會顯示元件的版本號碼、CodeBase 屬性和 EntryPoint 屬性。

using namespace System;
using namespace System::Reflection;
using namespace System::Security::Permissions;

[assembly:AssemblyVersionAttribute("1.0.2000.0")];

public ref class Example
{
private: 
    int factor;

public:
    Example(int f)
    {
        factor = f;
    }

    int SampleMethod(int x) 
    { 
        Console::WriteLine("\nExample->SampleMethod({0}) executes.", x);
        return x * factor;
    }
};

void main()
{
    Assembly^ assem = Example::typeid->Assembly;

    Console::WriteLine("Assembly Full Name:");
    Console::WriteLine(assem->FullName);

    // The AssemblyName type can be used to parse the full name.
    AssemblyName^ assemName = assem->GetName();
    Console::WriteLine("\nName: {0}", assemName->Name);
    Console::WriteLine("Version: {0}.{1}", 
        assemName->Version->Major, assemName->Version->Minor);

    Console::WriteLine("\nAssembly CodeBase:");
    Console::WriteLine(assem->CodeBase);

    // Create an object from the assembly, passing in the correct number and
    // type of arguments for the constructor.
    Object^ o = assem->CreateInstance("Example", false, 
        BindingFlags::ExactBinding, 
        nullptr, gcnew array<Object^> { 2 }, nullptr, nullptr);

    // Make a late-bound call to an instance method of the object.    
    MethodInfo^ m = assem->GetType("Example")->GetMethod("SampleMethod");
    Object^ ret = m->Invoke(o, gcnew array<Object^> { 42 });
    Console::WriteLine("SampleMethod returned {0}.", ret);

    Console::WriteLine("\nAssembly entry point:");
    Console::WriteLine(assem->EntryPoint);
}

/* This code example produces output similar to the following:

Assembly Full Name:
source, Version=1.0.2000.0, Culture=neutral, PublicKeyToken=null

Name: source
Version: 1.0

Assembly CodeBase:
file:///C:/sdtree/AssemblyClass/cpp/source.exe

Example->SampleMethod(42) executes.
SampleMethod returned 84.

Assembly entry point:
UInt32 _mainCRTStartup()
 */
using System;
using System.Reflection;
using System.Security.Permissions;

[assembly:AssemblyVersionAttribute("1.0.2000.0")]

public class Example
{
    private int factor;
    public Example(int f)
    {
        factor = f;
    }

    public int SampleMethod(int x)
    {
        Console.WriteLine("\nExample.SampleMethod({0}) executes.", x);
        return x * factor;
    }

    public static void Main()
    {
        Assembly assem = typeof(Example).Assembly;

        Console.WriteLine("Assembly Full Name:");
        Console.WriteLine(assem.FullName);

        // The AssemblyName type can be used to parse the full name.
        AssemblyName assemName = assem.GetName();
        Console.WriteLine("\nName: {0}", assemName.Name);
        Console.WriteLine("Version: {0}.{1}",
            assemName.Version.Major, assemName.Version.Minor);

        Console.WriteLine("\nAssembly CodeBase:");
        Console.WriteLine(assem.CodeBase);

        // Create an object from the assembly, passing in the correct number
        // and type of arguments for the constructor.
        Object o = assem.CreateInstance("Example", false,
            BindingFlags.ExactBinding,
            null, new Object[] { 2 }, null, null);

        // Make a late-bound call to an instance method of the object.
        MethodInfo m = assem.GetType("Example").GetMethod("SampleMethod");
        Object ret = m.Invoke(o, new Object[] { 42 });
        Console.WriteLine("SampleMethod returned {0}.", ret);

        Console.WriteLine("\nAssembly entry point:");
        Console.WriteLine(assem.EntryPoint);
    }
}

/* This code example produces output similar to the following:

Assembly Full Name:
source, Version=1.0.2000.0, Culture=neutral, PublicKeyToken=null

Name: source
Version: 1.0

Assembly CodeBase:
file:///C:/sdtree/AssemblyClass/cs/source.exe

Example.SampleMethod(42) executes.
SampleMethod returned 84.

Assembly entry point:
Void Main()
 */
Imports System.Reflection
Imports System.Security.Permissions

<assembly: AssemblyVersionAttribute("1.0.2000.0")>

Public Class Example
    Private factor As Integer
    
    Public Sub New(ByVal f As Integer) 
        factor = f
    End Sub 
    
    Public Function SampleMethod(ByVal x As Integer) As Integer 
        Console.WriteLine(vbCrLf & "Example.SampleMethod({0}) executes.", x)
        Return x * factor
    End Function 
    
    Public Shared Sub Main() 
        Dim assem As Assembly = GetType(Example).Assembly
        
        Console.WriteLine("Assembly Full Name:")
        Console.WriteLine(assem.FullName)
        
        ' The AssemblyName type can be used to parse the full name.
        Dim assemName As AssemblyName = assem.GetName()
        Console.WriteLine(vbLf + "Name: {0}", assemName.Name)
        Console.WriteLine("Version: {0}.{1}", assemName.Version.Major, _
            assemName.Version.Minor)
        
        Console.WriteLine(vbLf + "Assembly CodeBase:")
        Console.WriteLine(assem.CodeBase)
        
        ' Create an object from the assembly, passing in the correct number
        ' and type of arguments for the constructor.
        Dim o As Object = assem.CreateInstance("Example", False, _
            BindingFlags.ExactBinding, Nothing, _
            New Object() { 2 }, Nothing, Nothing)
        
        ' Make a late-bound call to an instance method of the object.    
        Dim m As MethodInfo = assem.GetType("Example").GetMethod("SampleMethod")
        Dim ret As Object = m.Invoke(o, New Object() { 42 })
        Console.WriteLine("SampleMethod returned {0}.", ret)
        
        Console.WriteLine(vbCrLf & "Assembly entry point:")
        Console.WriteLine(assem.EntryPoint)
    
    End Sub 
End Class 

' This code example produces output similar to the following:
'
'Assembly Full Name:
'source, Version=1.0.2000.0, Culture=neutral, PublicKeyToken=null
'
'Name: source
'Version: 1.0
'
'Assembly CodeBase:
'file:///C:/sdtree/AssemblyClass/vb/source.exe
'
'Example.SampleMethod(42) executes.
'SampleMethod returned 84.
'
'Assembly entry point:
'Void Main()
'

備註

使用 Assembly 類別來載入元件、探索元件的元數據和組成部分、探索元件中包含的類型,以及建立這些類型的實例。

若要取得 Assembly 物件的數位,代表目前載入至應用程式域的元件(例如,簡單專案的預設應用程式域),請使用 AppDomain.GetAssemblies 方法。

若要動態載入元件,Assembly 類別會提供下列靜態方法(Visual Basic 中的Shared 方法)。 元件會載入載作業的應用程式域。

  • 載入元件的建議方式是使用 Load 方法,以識別要以其顯示名稱載入的元件(例如,“System.Windows.Forms, Version=2.0.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089” )。 搜尋元件會遵循 運行時間如何尋找元件中所述的規則。

  • ReflectionOnlyLoadReflectionOnlyLoadFrom 方法可讓您載入反映的元件,但無法執行。 例如,以64位平臺為目標的元件可以透過在32位平臺上執行的程式代碼來檢查。

  • LoadFileLoadFrom 方法適用於必須依路徑識別元件的罕見案例。

若要取得目前執行之元件的 Assembly 物件,請使用 GetExecutingAssembly 方法。

Assembly 類別的許多成員都會提供元件的相關信息。 例如:

GetTypes 方法會列出元件中的所有類型。 GetExportedTypes 方法會列出元件外部呼叫端可以看到的類型。 GetType 方法可用來搜尋元件中的特定類型。 CreateInstance 方法可用來搜尋和建立元件中的型別實例。

如需元件的詳細資訊,請參閱 應用程式域 主題中的一節。

建構函式

Assembly()

初始化 Assembly 類別的新實例。

屬性

CodeBase
已淘汰.
已淘汰.

取得原本指定的元件位置,例如,在 AssemblyName 物件中。

CustomAttributes

取得集合,其中包含這個元件的自定義屬性。

DefinedTypes

取得這個元件中定義的型別集合。

EntryPoint

取得這個元件的進入點。

EscapedCodeBase
已淘汰.
已淘汰.

取得表示程式代碼基底的 URI,包括逸出字元。

Evidence

取得這個元件的辨識項。

ExportedTypes

取得這個元件中定義之公用型別的集合,這些公用型別在元件外部可見。

FullName

取得元件的顯示名稱。

GlobalAssemblyCache
已淘汰.

取得值,指出元件是否已從全域程式集緩存載入 (.NET Framework)。

HostContext

取得載入元件的主機內容。

ImageRuntimeVersion

取得字串,表示儲存在包含指令清單之檔案中的 Common Language Runtime (CLR) 版本。

IsCollectible

取得值,這個值表示這個元件是否保留在可收集 AssemblyLoadContext中。

IsDynamic

取得值,這個值表示目前元件是否使用反映發出,以動態方式在目前進程中產生。

IsFullyTrusted

取得值,這個值表示目前的元件是否以完全信任載入。

Location

取得包含指令清單之載入檔案的完整路徑或 UNC 位置。

ManifestModule

取得包含目前元件的指令清單的模組。

Modules

取得集合,其中包含這個元件中的模組。

PermissionSet

取得目前元件的授與集。

ReflectionOnly

取得 Boolean 值,指出這個元件是否載入至僅限反映的內容。

SecurityRuleSet

取得值,這個值表示 Common Language Runtime (CLR) 針對這個元件強制執行的一組安全性規則。

方法

CreateInstance(String)

從這個元件找出指定的類型,並使用區分大小寫的搜尋,使用系統啟動器建立它的實例。

CreateInstance(String, Boolean)

從這個元件找出指定的型別,並使用系統啟動器建立它的實例,並選擇性區分大小寫的搜尋。

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

從這個元件找出指定的型別,並使用系統啟動器建立它的實例,並選擇性區分大小寫的搜尋,並具有指定的文化特性、自變數和系結和啟用屬性。

CreateQualifiedName(String, String)

建立依元件顯示名稱限定的類型名稱。

Equals(Object)

判斷這個元件和指定的物件是否相等。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetAssembly(Type)

取得目前載入的元件,其中已定義指定的型別。

GetCallingAssembly()

傳回叫用目前執行中方法之方法的 Assembly

GetCustomAttributes(Boolean)

取得這個元件的所有自定義屬性。

GetCustomAttributes(Type, Boolean)

取得這個元件的自定義屬性,如 型別所指定。

GetCustomAttributesData()

傳回已套用至目前 Assembly的屬性相關信息,以 CustomAttributeData 物件表示。

GetEntryAssembly()

取得執行中應用程式的項目元件。

GetExecutingAssembly()

取得包含目前正在執行之程式代碼的元件。

GetExportedTypes()

取得這個元件中所定義的公用型別,這些類型會顯示在元件外部。

GetFile(String)

取得這個元件指令清單之檔案數據表中指定檔案的 FileStream

GetFiles()

取得元件指令清單之檔案數據表中的檔案。

GetFiles(Boolean)

取得元件指令清單之檔案數據表中的檔案,指定是否要包含資源模組。

GetForwardedTypes()

表示元件,這是 Common Language Runtime 應用程式的可重複使用、可版本設定和自我描述的建置組塊。

GetHashCode()

傳回這個實例的哈希碼。

GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetLoadedModules()

取得屬於這個元件的所有已載入模組。

GetLoadedModules(Boolean)

取得屬於此元件的所有已載入模組,並指定是否要包含資源模組。

GetManifestResourceInfo(String)

傳回指定資源保存方式的相關信息。

GetManifestResourceNames()

傳回這個元件中所有資源的名稱。

GetManifestResourceStream(String)

從這個元件載入指定的指令清單資源。

GetManifestResourceStream(Type, String)

從這個元件載入指定的指令清單資源,範圍是由指定型別的命名空間所限定。

GetModule(String)

取得這個元件中的指定模組。

GetModules()

取得屬於這個元件的所有模組。

GetModules(Boolean)

取得屬於此元件的所有模組,指定是否要包含資源模組。

GetName()

取得這個元件的 AssemblyName

GetName(Boolean)

取得這個元件的 AssemblyName,並將程式代碼基底設定為 copiedName所指定。

GetObjectData(SerializationInfo, StreamingContext)
已淘汰.

取得串行化資訊,其中包含重新驗證這個元件所需的所有數據。

GetReferencedAssemblies()

取得這個元件所參考之所有元件的 AssemblyName 物件。

GetSatelliteAssembly(CultureInfo)

取得指定文化特性的附屬元件。

GetSatelliteAssembly(CultureInfo, Version)

取得指定文化特性之附屬元件的指定版本。

GetType()

表示元件,這是 Common Language Runtime 應用程式的可重複使用、可版本設定和自我描述的建置組塊。

GetType()

取得目前實例的 Type

(繼承來源 Object)
GetType(String)

取得元件實例中具有指定名稱的 Type 物件。

GetType(String, Boolean)

取得元件實例中具有指定名稱的 Type 物件,並在找不到型別時選擇性地擲回例外狀況。

GetType(String, Boolean, Boolean)

取得元件實例中具有指定名稱的 Type 物件、忽略大小寫的選項,以及找不到型別時擲回例外狀況的選項。

GetTypes()

取得這個元件中定義的所有型別。

IsDefined(Type, Boolean)

指出指定的屬性是否已套用至元件。

Load(AssemblyName)

載入元件,指定其 AssemblyName

Load(AssemblyName, Evidence)
已淘汰.

載入元件,指定其 AssemblyName。 元件會使用提供的辨識項來載入。

Load(Byte[])

使用包含所發出元件的通用物件檔案格式 (COFF) 型映射載入元件。

Load(Byte[], Byte[])

使用包含所發出元件的通用物件檔案格式 (COFF) 型映射載入元件,選擇性地包含元件的符號。

Load(Byte[], Byte[], Evidence)
已淘汰.

使用包含所發出元件的通用物件檔案格式 (COFF) 型影像載入元件,選擇性地包含元件的符號和辨識項。

Load(Byte[], Byte[], SecurityContextSource)

使用包含所發出元件的通用物件檔案格式 (COFF) 型映射載入元件,選擇性地包含符號,並指定安全性內容的來源。

Load(String)

載入具有指定名稱的元件。

Load(String, Evidence)
已淘汰.

載入元件,指定其顯示名稱,並使用提供的辨識項。

LoadFile(String)

載入指定路徑上元件檔案的內容。

LoadFile(String, Evidence)
已淘汰.

載入指定其路徑的元件,使用提供的辨識項載入元件。

LoadFrom(String)

載入元件,指定其檔名或路徑。

LoadFrom(String, Byte[], AssemblyHashAlgorithm)
已淘汰.

載入元件,指定其檔名或路徑、哈希值和哈希演算法。

LoadFrom(String, Evidence)
已淘汰.

載入元件,指定其檔名或路徑,並提供安全性辨識項。

LoadFrom(String, Evidence, Byte[], AssemblyHashAlgorithm)
已淘汰.

載入元件,指定其檔名或路徑、安全性辨識項、哈希值和哈希演算法。

LoadModule(String, Byte[])

載入此元件內部的模組,其中包含包含所發出模組或資源檔的通用物件檔案格式(COFF)型映像。

LoadModule(String, Byte[], Byte[])

載入此元件內部的模組,其中包含包含所發出模組或資源檔的通用物件檔案格式(COFF)型映像。 也會載入代表模組符號的原始位元組。

LoadWithPartialName(String)
已淘汰.
已淘汰.
已淘汰.

使用部分名稱,從應用程式目錄或全域程式集緩存載入元件。

LoadWithPartialName(String, Evidence)
已淘汰.

使用部分名稱,從應用程式目錄或全域程式集緩存載入元件。 元件會使用提供的辨識項來載入。

MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ReflectionOnlyLoad(Byte[])
已淘汰.

從包含所發出元件的通用物件檔案格式 (COFF) 型映射載入元件。 元件會載入呼叫端應用程式域的僅限反映內容。

ReflectionOnlyLoad(String)
已淘汰.

根據元件的顯示名稱,將元件載入僅限反映的內容。

ReflectionOnlyLoadFrom(String)
已淘汰.

根據元件的路徑,將元件載入僅限反映的內容。

SetEntryAssembly(Assembly)

將應用程式的專案元件設定為提供的元件物件。

ToString()

傳回元件的完整名稱,也稱為顯示名稱。

UnsafeLoadFrom(String)

將元件載入載入內容中,略過一些安全性檢查。

運算子

Equality(Assembly, Assembly)

指出兩個 Assembly 物件是否相等。

Inequality(Assembly, Assembly)

指出兩個 Assembly 物件是否不相等。

事件

ModuleResolve

當 Common Language Runtime 類別載入器無法透過一般方法解析元件內部模組的參考時發生。

明確介面實作

_Assembly.GetType()

傳回目前實例的類型。

ICustomAttributeProvider.GetCustomAttributes(Boolean)

傳回這個成員上定義之所有自定義屬性的陣列,不包括具名屬性,如果沒有自定義屬性,則傳回空陣列。

ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

傳回在此成員上定義的自定義屬性陣列,依類型識別,如果沒有該類型的自定義屬性,則傳回空陣列。

ICustomAttributeProvider.IsDefined(Type, Boolean)

指出這個成員上是否已定義一或多個 attributeType 實例。

擴充方法

GetExportedTypes(Assembly)

表示元件,這是 Common Language Runtime 應用程式的可重複使用、可版本設定和自我描述的建置組塊。

GetModules(Assembly)

表示元件,這是 Common Language Runtime 應用程式的可重複使用、可版本設定和自我描述的建置組塊。

GetTypes(Assembly)

表示元件,這是 Common Language Runtime 應用程式的可重複使用、可版本設定和自我描述的建置組塊。

GetCustomAttribute(Assembly, Type)

擷取套用至指定元件之指定型別的自定義屬性。

GetCustomAttribute<T>(Assembly)

擷取套用至指定元件之指定型別的自定義屬性。

GetCustomAttributes(Assembly)

擷取套用至指定元件之自定義屬性的集合。

GetCustomAttributes(Assembly, Type)

擷取套用至指定元件之指定型別的自定義屬性集合。

GetCustomAttributes<T>(Assembly)

擷取套用至指定元件之指定型別的自定義屬性集合。

IsDefined(Assembly, Type)

指出指定的型別的自定義屬性是否套用至指定的元件。

TryGetRawMetadata(Assembly, Byte*, Int32)

擷取元件的元數據區段,以搭配 MetadataReader使用。

適用於

執行緒安全性

此類型是安全線程。

另請參閱