Assembly Class

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Represents an assembly, which is a reusable, versionable, and self-describing building block of a common language runtime application.

Inheritance Hierarchy

System..::.Object
System.Reflection..::.Assembly

Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)

Syntax

Public MustInherit Class Assembly _
    Implements ICustomAttributeProvider
public abstract class Assembly : ICustomAttributeProvider

The Assembly type exposes the following members.

Properties

Name Description
CustomAttributes Gets a collection that contains this assembly's custom attributes.
DefinedTypes Gets a collection of the types defined in this assembly.
EntryPoint Gets the entry point of this assembly.
ExportedTypes Gets a collection of the public types defined in this assembly that are visible outside the assembly.
FullName Gets the display name of the assembly.
ImageRuntimeVersion Gets a string representing the version of the common language runtime (CLR) saved in the file containing the manifest.
IsDynamic Gets a value that indicates whether the current assembly was generated dynamically in the current process by using reflection emit.
ManifestModule Gets the module that contains the manifest for the current assembly.
Modules Gets a collection that contains the modules in this assembly.

Top

Methods

Name Description
CreateInstance Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.
Equals Determines whether this assembly and the specified object are equal. (Overrides Object..::.Equals(Object).)
Finalize Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.)
GetCallingAssembly Returns the Assembly of the method that invoked the currently executing method.
GetCustomAttributes(Boolean) Gets all the custom attributes for this assembly.
GetCustomAttributes(Type, Boolean) Gets the custom attributes for this assembly as specified by type.
GetExecutingAssembly Gets the assembly that contains the code that is currently executing.
GetExportedTypes Gets the types defined in this assembly that are visible outside the assembly.
GetHashCode Returns the hash code for this instance. (Overrides Object..::.GetHashCode()()().)
GetManifestResourceInfo Returns information about how the given resource has been persisted.
GetManifestResourceNames Returns the names of all the resources in this assembly.
GetManifestResourceStream(String) Loads the specified manifest resource from this assembly.
GetManifestResourceStream(Type, String) Loads the specified manifest resource, scoped by the namespace of the specified type, from this assembly.
GetModules Gets all the modules that are part of this assembly.
GetName()()() Security Critical. Gets an AssemblyName for this assembly.
GetName(Boolean) Security Critical. Gets an AssemblyName for this assembly, setting the codebase as specified by copiedName.
GetSatelliteAssembly(CultureInfo) Gets the satellite assembly for the specified culture.
GetSatelliteAssembly(CultureInfo, Version) Gets the specified version of the satellite assembly for the specified culture.
GetType()()() Gets the Type of the current instance. (Inherited from Object.)
GetType(String) Gets the Type object with the specified name in the assembly instance.
GetType(String, Boolean) Gets the Type object with the specified name in the assembly instance and optionally throws an exception if the type is not found.
GetTypes Gets the types defined in this assembly.
IsDefined Indicates whether or not a specified attribute has been applied to the assembly.
Load(AssemblyName) Security Critical. Loads an assembly given its AssemblyName.
Load(String) Loads an assembly given the long form of its name.
LoadFrom Security Critical. Loads an assembly given its file name or path.
MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
ToString Returns the full name of the assembly, also known as the display name. (Overrides Object..::.ToString()()().)

Top

Extension Methods

Name Description
GetCustomAttribute(Type) Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified assembly. (Defined by CustomAttributeExtensions.)
GetCustomAttribute<(Of <(T>)>)()()() Overloaded. Retrieves a custom attribute of a specified type that is applied to a specified assembly. (Defined by CustomAttributeExtensions.)
GetCustomAttributes()()() Overloaded. Retrieves a collection of custom attributes that are applied to a specified assembly. (Defined by CustomAttributeExtensions.)
GetCustomAttributes(Type) Overloaded. Retrieves a collection of custom attributes of a specified type that are applied to a specified assembly. (Defined by CustomAttributeExtensions.)
GetCustomAttributes<(Of <(T>)>)()()() Overloaded. Retrieves a collection of custom attributes of a specified type that are applied to a specified assembly. (Defined by CustomAttributeExtensions.)
IsDefined Indicates whether custom attributes of a specified type are applied to a specified assembly. (Defined by CustomAttributeExtensions.)

Top

Remarks

Use the Assembly class to load assemblies, to explore the metadata and constituent parts of assemblies, to discover the types contained in assemblies, and to create instances of those types.

To load assemblies dynamically, the Assembly class provides the static Load(String) method overload (Shared method overload in Visual Basic). Assemblies are loaded into the Windows Phone application domain. Other overloads can be called only by the trusted assemblies in the .NET Framework.

To get an Assembly object for the currently executing assembly, use the GetExecutingAssembly method.

Many members of the Assembly class provide information about an assembly. For example:

The GetTypes method lists all the types in the assembly. The GetExportedTypes method lists the types that are visible to callers outside the assembly. The GetType method can be used to search for a particular type in the assembly. The CreateInstance method can be used to search for and create instances of types in the assembly.

Examples

The following code example shows how to obtain the currently executing assembly, create an instance of a type contained in that assembly, and invoke one of the type's methods with late binding. For this purpose, the code example defines a class named Example, with a method named SampleMethod. The constructor of the class accepts an integer, which is used to compute the return value of the method.

The code example also demonstrates the use of the GetName method to obtain an AssemblyName object that can be used to parse the full name of the assembly. The example displays the version number of the assembly and the EntryPoint property.

Imports System.Reflection
Imports System.Security.Permissions

<Assembly: AssemblyVersionAttribute("1.0.2000.0")> 

Public Class Example
   Private Shared outputBlock As System.Windows.Controls.TextBlock
   Private factor As Integer

   Public Sub New()
      Me.New(42)
   End Sub
   Public Sub New(ByVal f As Integer)
      factor = f
   End Sub

   Public Function SampleMethod(ByVal x As Integer) As Integer
      outputBlock.Text &= String.Format(vbCrLf & "Example.SampleMethod({0}) executes.", x) & vbCrLf
      Return x * factor
   End Function

   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)

      Example.outputBlock = outputBlock
      Dim assem As [Assembly] = [Assembly].GetExecutingAssembly()

      outputBlock.Text &= "Assembly Full Name:" & vbCrLf
      outputBlock.Text &= assem.FullName & vbCrLf

      ' Create an object from the assembly, using the default constructor.
      Dim o As Object = assem.CreateInstance("SilverlightApplication.Example")

      ' Make a late-bound call to an instance method of the object.  
      Dim m As MethodInfo = o.GetType().GetMethod("SampleMethod")
      Dim ret As Object = m.Invoke(o, New Object() {42})
      outputBlock.Text &= String.Format("SampleMethod returned {0}.", ret) & vbCrLf

      outputBlock.Text &= vbCrLf & "Assembly entry point:" & vbCrLf
      Dim entry As MethodInfo = assem.EntryPoint
      If entry Is Nothing Then
         outputBlock.Text &= "No entry point defined for the assembly." & vbCrLf
      Else
         outputBlock.Text &= entry.ToString() & vbCrLf
      End If
   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
'
'Example.SampleMethod(42) executes.
'SampleMethod returned 1784.
'
'Assembly entry point:
'No entry point defined for the assembly.
' 
using System;
using System.Reflection;
using System.Security.Permissions;

[assembly: AssemblyVersionAttribute("1.0.2000.0")]

public class Example
{
   private static System.Windows.Controls.TextBlock outputBlock;
   private int factor;

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

   public int SampleMethod(int x)
   {
      outputBlock.Text += String.Format("\nExample.SampleMethod({0}) executes.", x) + "\n";
      return x * factor;
   }

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {

      Example.outputBlock = outputBlock;
      Assembly assem = Assembly.GetExecutingAssembly();

      outputBlock.Text += "Assembly Full Name:" + "\n";
      outputBlock.Text += assem.FullName + "\n";

      // Create an object from the assembly, using the default constructor.
      Object o = assem.CreateInstance("Example");

      // 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 });
      outputBlock.Text += String.Format("SampleMethod returned {0}.\n", ret);

      outputBlock.Text += "\nAssembly entry point:\n";
      MethodInfo entry = assem.EntryPoint;
      if (entry == null)
      {
         outputBlock.Text += "No entry point defined for the assembly.\n";
      }
      else
      {
         outputBlock.Text += entry.ToString() + "\n";
      }
   }
}

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

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

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

Assembly entry point:
No entry point defined for the assembly.
 */

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Platforms

Windows Phone

Thread Safety

This type is thread safe.

See Also

Reference

System.Reflection Namespace

AppDomain

AssemblyName