Returns the Assembly of the method that invoked the currently executing method.
Assembly: mscorlib (in mscorlib.dll)
Public Shared Function GetCallingAssembly As Assemblypublic static Assembly GetCallingAssembly()public:
static Assembly^ GetCallingAssembly()static member GetCallingAssembly : unit -> Assembly
Return Value
Type: System.ReflectionThe Assembly object of the method that invoked the currently executing method.
If the method that calls the GetCallingAssembly method is expanded inline by the just-in-time (JIT) compiler, or if its caller is expanded inline, the assembly that is returned by GetCallingAssembly may differ unexpectedly. For example, consider the following methods and assemblies:
Method M1 in assembly A1 calls GetCallingAssembly.
Method M2 in assembly A2 calls M1.
Method M3 in assembly A3 calls M2.
When M1 is not inlined, GetCallingAssembly returns A2. When M1 is inlined, GetCallingAssembly returns A3. Similarly, when M2 is not inlined, GetCallingAssembly returns A2. When M2 is inlined, GetCallingAssembly returns A3.
This effect also occurs when M1 executes as a tail call from M2, or when M2 executes as a tail call from M3. You can prevent the JIT compiler from inlining the method that calls GetCallingAssembly, by applying the MethodImplAttribute attribute with the MethodImplOptions
The following example gets the calling assembly of the current method.
Dim SampleAssembly As [Assembly]
' Instantiate a target object.
Dim Integer1 As New Int32()
Dim Type1 As Type
' Set the Type instance to the target class type.
Type1 = Integer1.GetType()
' Instantiate an Assembly class to the assembly housing the Integer type.
SampleAssembly = [Assembly].GetAssembly(Integer1.GetType())
' Display the name of the assembly that is calling the method.
Console.WriteLine(("GetCallingAssembly=" + [Assembly].GetCallingAssembly().FullName))
End Sub 'Snippet4
Assembly SampleAssembly;
// Instantiate a target object.
Int32 Integer1 = new Int32();
Type Type1;
// Set the Type instance to the target class type.
Type1 = Integer1.GetType();
// Instantiate an Assembly class to the assembly housing the Integer type.
SampleAssembly = Assembly.GetAssembly(Integer1.GetType());
// Display the name of the assembly that is calling the method.
Console.WriteLine("GetCallingAssembly=" + Assembly.GetCallingAssembly().FullName);
Assembly^ SampleAssembly;
// Instantiate a target object.
Int32 Integer1(0);
Type^ Type1;
// Set the Type instance to the target class type.
Type1 = Integer1.GetType();
// Instantiate an Assembly class to the assembly housing the Integer type.
SampleAssembly = Assembly::GetAssembly( Integer1.GetType() );
// Display the name of the assembly that is calling the method.
Console::WriteLine( "GetCallingAssembly= {0}", Assembly::GetCallingAssembly()->FullName );
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.