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
동적 어셈블리가 저장되는 정규화된 경로입니다.
예외
예외 형식 | 조건 |
---|---|
언로드된 응용 프로그램 도메인에서 작업을 시도한 경우 |
설명
이 메서드는 이 인스턴스와 연결된 내부 AppDomainSetup의 DynamicBase 속성을 설정합니다.
예제
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 보안
- SecurityPermission 응용 프로그램 도메인을 만들고 조작하는 데 필요한 권한입니다. 연관된 열거형: SecurityPermissionFlag.ControlAppDomain
- FileIOPermission 파일 또는 디렉터리에서 읽거나, 경로 자체에 있는 정보에 액세스하는 데 필요한 권한입니다. 연관된 열거형: FileIOPermissionAccess.Read, FileIOPermissionAccess.PathDiscovery
플랫폼
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에서 사용되지 않음(컴파일러 경고)