Assembly 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示元件,這是 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” )。 搜尋元件會遵循 運行時間如何尋找元件中所述的規則。
ReflectionOnlyLoad 和 ReflectionOnlyLoadFrom 方法可讓您載入反映的元件,但無法執行。 例如,以64位平臺為目標的元件可以透過在32位平臺上執行的程式代碼來檢查。
若要取得目前執行之元件的 Assembly 物件,請使用 GetExecutingAssembly 方法。
Assembly 類別的許多成員都會提供元件的相關信息。 例如:
GetName 方法會傳回 AssemblyName 物件,提供元件顯示名稱元件的存取權。
GetCustomAttributes 方法會列出套用至元件的屬性。
GetFiles 方法可讓您存取元件指令清單中的檔案。
GetManifestResourceNames 方法會提供元件指令清單中的資源名稱。
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,並將程式代碼基底設定為 |
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) |
指出這個成員上是否已定義一或多個 |
擴充方法
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使用。 |
適用於
執行緒安全性
此類型是安全線程。