Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
System Namespace
AppDomain Class
 DynamicDirectory Property

  Switch on low bandwidth view
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
AppDomain..::.DynamicDirectory Property

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
Visual Basic (Usage)
Dim instance As AppDomain
Dim value As String

value = instance.DynamicDirectory
C#
public string DynamicDirectory { get; }
Visual C++
public:
virtual property String^ DynamicDirectory {
    String^ get () sealed;
}
JScript
public final function get DynamicDirectory () : String

Property Value

Type: System..::.String
Get the directory that the assembly resolver uses to probe for dynamically-created assemblies.

Implements

_AppDomain..::.DynamicDirectory
ExceptionCondition
AppDomainUnloadedException

The operation is attempted on an unloaded application domain.

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.

Visual Basic
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

C#
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");
        }
    }
}

Visual C++
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
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker