Assembly 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示一个程序集,该程序集是公共语言运行时应用程序的可重用、可版本控制且自描述的构建基块。
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
- 派生
- 属性
- 实现
示例
下面的代码示例演示如何获取当前正在执行的程序集,创建该程序集中包含的类型的实例,以及调用具有后期绑定的类型之一的方法。 为此,代码示例使用名为 SampleMethod
的方法定义名为 Example
的类。 类的构造函数接受整数,该整数用于计算方法的返回值。
该代码示例还演示了如何使用 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,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 |
获取一个字符串,该字符串表示包含在包含清单的文件中保存的公共语言运行时 (CLR) 的版本。 |
IsCollectible |
获取一个值,该值指示此程序集是否保存在可收集 AssemblyLoadContext中。 |
IsDynamic |
获取一个值,该值指示当前程序集是否使用反射发出在当前进程中动态生成。 |
IsFullyTrusted |
获取一个值,该值指示当前程序集是否使用完全信任加载。 |
Location |
获取包含清单的已加载文件的完整路径或 UNC 位置。 |
ManifestModule |
获取包含当前程序集清单的模块。 |
Modules |
获取包含此程序集中的模块的集合。 |
PermissionSet |
获取当前程序集的授权集。 |
ReflectionOnly |
获取一个 Boolean 值,该值指示此程序集是否已加载到仅反射上下文中。 |
SecurityRuleSet |
获取一个值,该值指示公共语言运行时(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() |
表示一个程序集,该程序集是公共语言运行时应用程序的可重用、可版本控制且自描述的构建基块。 |
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() |
表示一个程序集,该程序集是公共语言运行时应用程序的可重用、可版本控制且自描述的构建基块。 |
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 |
当公共语言运行时类加载程序无法通过正常方式解析对程序集内部模块的引用时发生。 |
显式接口实现
_Assembly.GetType() |
返回当前实例的类型。 |
ICustomAttributeProvider.GetCustomAttributes(Boolean) |
返回此成员上定义的所有自定义属性的数组,不包括命名属性,如果没有自定义属性,则返回空数组。 |
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean) |
返回在此成员上定义的自定义属性的数组(按类型标识)或空数组(如果没有该类型的自定义属性)。 |
ICustomAttributeProvider.IsDefined(Type, Boolean) |
指示是否在此成员上定义了一个或多个 |
扩展方法
GetExportedTypes(Assembly) |
表示一个程序集,该程序集是公共语言运行时应用程序的可重用、可版本控制且自描述的构建基块。 |
GetModules(Assembly) |
表示一个程序集,该程序集是公共语言运行时应用程序的可重用、可版本控制且自描述的构建基块。 |
GetTypes(Assembly) |
表示一个程序集,该程序集是公共语言运行时应用程序的可重用、可版本控制且自描述的构建基块。 |
GetCustomAttribute(Assembly, Type) |
检索应用于指定程序集的指定类型的自定义属性。 |
GetCustomAttribute<T>(Assembly) |
检索应用于指定程序集的指定类型的自定义属性。 |
GetCustomAttributes(Assembly) |
检索应用于指定程序集的自定义属性的集合。 |
GetCustomAttributes(Assembly, Type) |
检索应用于指定程序集的指定类型的自定义属性集合。 |
GetCustomAttributes<T>(Assembly) |
检索应用于指定程序集的指定类型的自定义属性集合。 |
IsDefined(Assembly, Type) |
指示指定类型的自定义属性是否应用于指定的程序集。 |
TryGetRawMetadata(Assembly, Byte*, Int32) |
检索程序集的元数据部分,以用于 MetadataReader。 |
适用于
线程安全性
此类型是线程安全的。