AppDomain.SetDynamicBase 方法

注意:此方法现在已过时。

建立指定的目录路径,作为存储和访问动态生成的文件的位置。

**命名空间:**System
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
<ObsoleteAttribute("AppDomain.SetDynamicBase has been deprecated. Please investigate the use of AppDomainSetup.DynamicBase instead. https://go.microsoft.com/fwlink/?linkid=14202")> _
Public Sub SetDynamicBase ( _
    path As String _
)
用法
Dim instance As AppDomain
Dim path As String

instance.SetDynamicBase(path)
[ObsoleteAttribute("AppDomain.SetDynamicBase has been deprecated. Please investigate the use of AppDomainSetup.DynamicBase instead. https://go.microsoft.com/fwlink/?linkid=14202")] 
public void SetDynamicBase (
    string path
)
[ObsoleteAttribute(L"AppDomain.SetDynamicBase has been deprecated. Please investigate the use of AppDomainSetup.DynamicBase instead. https://go.microsoft.com/fwlink/?linkid=14202")] 
public:
void SetDynamicBase (
    String^ path
)
/** @attribute ObsoleteAttribute("AppDomain.SetDynamicBase has been deprecated. Please investigate the use of AppDomainSetup.DynamicBase instead. https://go.microsoft.com/fwlink/?linkid=14202") */ 
public void SetDynamicBase (
    String path
)
ObsoleteAttribute("AppDomain.SetDynamicBase has been deprecated. Please investigate the use of AppDomainSetup.DynamicBase instead. https://go.microsoft.com/fwlink/?linkid=14202") 
public function SetDynamicBase (
    path : String
)

参数

  • path
    到动态程序集存储位置的完全限定路径。

异常

异常类型 条件

AppDomainUnloadedException

试图对已卸载的应用程序域进行操作。

备注

此方法设置与此实例关联的内部 AppDomainSetupDynamicBase 属性。

示例

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

.NET Framework 安全性

平台

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:1.0、1.1
在 2.0 中过时(编译器警告)

请参见

参考

AppDomain 类
AppDomain 成员
System 命名空间
DynamicBase