Gets the directory that the assembly resolver uses to probe for dynamically-created assemblies.
Namespace:
System
Assembly:
mscorlib (in mscorlib.dll)
Visual Basic (Declaration)
Public ReadOnly Property DynamicDirectory As String
Dim instance As AppDomain
Dim value As String
value = instance.DynamicDirectory
public string DynamicDirectory { get; }
public:
virtual property String^ DynamicDirectory {
String^ get () sealed;
}
public final function get DynamicDirectory () : String
Property Value
Type:
System..::.StringGet the directory that the assembly resolver uses to probe for dynamically-created assemblies.
Implements
_AppDomain..::.DynamicDirectory
This property is only available after an attempt has been made to load an assembly into this domain.
The following example creates an application domain and sets a directory for dynamic assemblies. The example uses the DynamicDirectory property to retrieve the name of the directory, so it can create the directory. The example then creates a dynamic assembly.
Imports System
Imports System.Reflection
Imports System.Reflection.Emit
Class ADDynamicBase
' SetDynamicBase.exe
Overloads Shared Sub Main(args() As String)
' Create a new AppDomain.
Dim setup As New AppDomainSetup()
' Need to set the application name before setting the dynamic base.
setup.ApplicationName = "MyApplication"
Dim domain As AppDomain = AppDomain.CreateDomain("MyDomain", Nothing, setup)
' Tell the domain to search for assemblies in subdirectories
' of DynamicAssemblyDir.
domain.SetDynamicBase("C:\DynamicAssemblyDir")
' Note that the actual dynamic directory has the form
' <DynamicBase>\<number>\<ApplicationName>, rather than
' simply <DynamicBase>.
Dim dynamicDir As [String] = domain.DynamicDirectory
' The AssemblyBuilder won't create this directory automatically.
If Not System.IO.Directory.Exists(dynamicDir) Then
System.IO.Directory.CreateDirectory(dynamicDir)
End If
' Define the dynamic assembly.
Dim asmName As New AssemblyName()
asmName.Name = "DynamicHelloWorld"
Dim asm As AssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.Save, dynamicDir)
' Define a dynamic module in the assembly.
Dim [mod] As ModuleBuilder
[mod] = asm.DefineDynamicModule("DynamicHelloWorld", "DynamicHelloWorld.dll")
' Define the "HelloWorld" type in the module.
Dim typ As TypeBuilder = [mod].DefineType("HelloWorld", TypeAttributes.Public)
' Define the "SayHello" method.
Dim meth As MethodBuilder = typ.DefineMethod("SayHello", MethodAttributes.Public, Nothing, Nothing)
Dim il As ILGenerator = meth.GetILGenerator()
il.EmitWriteLine("Hello World!")
il.Emit(OpCodes.Ret)
' Complete the HelloWorld type.
typ.CreateType()
' Save the assembly to the dynamic assembly directory.
asm.Save("DynamicHelloWorld.dll")
' Launch MyExecutable.exe, which will load DynamicHelloWorld.dll.
domain.ExecuteAssembly("MyExecutable.exe")
End Sub 'Main
End Class 'ADDynamicBase
using System;
using System.Reflection;
using System.Reflection.Emit;
namespace AppDomainSnippets
{
class ADDynamicBase
{
// SetDynamicBase.exe
static void Main(string[] args)
{
// Create a new AppDomain.
AppDomainSetup setup = new AppDomainSetup();
// Need to set the application name before setting the dynamic base.
setup.ApplicationName = "MyApplication";
AppDomain domain = AppDomain.CreateDomain("MyDomain", null, setup);
// Tell the domain to search for assemblies in subdirectories
// of DynamicAssemblyDir.
domain.SetDynamicBase("C:\\DynamicAssemblyDir");
// Note that the actual dynamic directory has the form
// <DynamicBase>\<number>\<ApplicationName>, rather than
// simply <DynamicBase>.
String dynamicDir = domain.DynamicDirectory;
// The AssemblyBuilder won't create this directory automatically.
if(!System.IO.Directory.Exists(dynamicDir))
{
System.IO.Directory.CreateDirectory(dynamicDir);
}
// Define the dynamic assembly.
AssemblyName asmName = new AssemblyName();
asmName.Name = "DynamicHelloWorld";
AssemblyBuilder asm = AppDomain.CurrentDomain.DefineDynamicAssembly
(asmName, AssemblyBuilderAccess.Save, dynamicDir);
// Define a dynamic module in the assembly.
ModuleBuilder mod;
mod = asm.DefineDynamicModule
("DynamicHelloWorld", "DynamicHelloWorld.dll");
// Define the "HelloWorld" type in the module.
TypeBuilder typ = mod.DefineType
("HelloWorld", TypeAttributes.Public);
// Define the "SayHello" method.
MethodBuilder meth = typ.DefineMethod
("SayHello", MethodAttributes.Public, null, null);
ILGenerator il = meth.GetILGenerator();
il.EmitWriteLine("Hello World!");
il.Emit(OpCodes.Ret);
// Complete the HelloWorld type.
typ.CreateType();
// Save the assembly to the dynamic assembly directory.
asm.Save("DynamicHelloWorld.dll");
// Launch MyExecutable.exe, which will load DynamicHelloWorld.dll.
domain.ExecuteAssembly("MyExecutable.exe");
}
}
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
// SetDynamicBase.exe
int main()
{
array<String^>^args = Environment::GetCommandLineArgs();
// Create a new AppDomain.
AppDomainSetup^ setup = gcnew AppDomainSetup;
// Need to set the application name before setting the dynamic base.
setup->ApplicationName = "MyApplication";
AppDomain^ domain = AppDomain::CreateDomain( "MyDomain", nullptr, setup );
// Tell the domain to search for assemblies in subdirectories
// of DynamicAssemblyDir.
domain->SetDynamicBase( "C:\\DynamicAssemblyDir" );
// Note that the actual dynamic directory has the form
// <DynamicBase>\<number>\<ApplicationName>, rather than
// simply <DynamicBase>.
String^ dynamicDir = domain->DynamicDirectory;
// The AssemblyBuilder won't create this directory automatically.
if ( !System::IO::Directory::Exists( dynamicDir ) )
{
System::IO::Directory::CreateDirectory( dynamicDir );
}
// Define the dynamic assembly.
AssemblyName^ asmName = gcnew AssemblyName;
asmName->Name = "DynamicHelloWorld";
AssemblyBuilder^ asmb = AppDomain::CurrentDomain->DefineDynamicAssembly( asmName, AssemblyBuilderAccess::Save, dynamicDir );
// Define a dynamic module in the assembly.
ModuleBuilder^ mod;
mod = asmb->DefineDynamicModule( "DynamicHelloWorld", "DynamicHelloWorld.dll" );
// Define the S"HelloWorld" type in the module.
TypeBuilder^ typ = mod->DefineType( "HelloWorld", TypeAttributes::Public );
// Define the S"SayHello" method.
MethodBuilder^ meth = typ->DefineMethod( "SayHello", MethodAttributes::Public, nullptr, nullptr );
ILGenerator^ il = meth->GetILGenerator();
il->EmitWriteLine( "Hello World!" );
il->Emit( OpCodes::Ret );
// Complete the HelloWorld type.
typ->CreateType();
// Save the assembly to the dynamic assembly directory.
asmb->Save( "DynamicHelloWorld.dll" );
// Launch MyExecutable.exe, which will load DynamicHelloWorld.dll.
domain->ExecuteAssembly( "MyExecutable.exe" );
}
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
.NET Framework
Supported in: 3.5, 3.0, 2.0, 1.1, 1.0
Reference