_AppDomain.Loadとは? わかりやすく解説

AppDomain.Load メソッド (AssemblyName)

AssemblyName を指定してAssembly読み込みます。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function Load ( _
    assemblyRef As AssemblyName _
) As Assembly
Dim instance As AppDomain
Dim assemblyRef As AssemblyName
Dim returnValue As Assembly

returnValue = instance.Load(assemblyRef)
public Assembly Load (
    AssemblyName assemblyRef
)
public:
virtual Assembly^ Load (
    AssemblyName^ assemblyRef
) sealed
public final Assembly Load (
    AssemblyName assemblyRef
)
public final function Load (
    assemblyRef : AssemblyName
) : Assembly

パラメータ

assemblyRef

読み込むアセンブリについて記述しているオブジェクト

戻り値
読み込み済みアセンブリ

例外例外
例外種類条件

ArgumentNullException

assemblyRefnull 参照 (Visual Basic では Nothing) です。

FileNotFoundException

assemblyRef が見つかりません。

BadImageFormatException

assemblyRef有効なアセンブリではありません。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメイン試行されています。

FileLoadException

1 つアセンブリまたはモジュール2 つ異な証拠使用して 2 回読込まれました。

解説解説

このメソッドは、現在のアプリケーション ドメインアセンブリ読み込むためだけに使用してください。このメソッドは、静的Load メソッド呼び出すことができない呼び出し元との相互運用性確保するために定義されています。

現在のアプリケーション ドメインではない対象アプリケーション ドメインLoad呼び出そうとすると、対象アプリケーション ドメインアセンブリ正常に読み込まれます。Assembly は MarshalByRefObject ではないため、読み込まれアセンブリ対すAssembly をこのメソッド現在のアプリケーション ドメイン戻そうとした場合共通言語ランタイムアセンブリ現在のアプリケーション ドメイン読み込もうとしますが、結果的に読み込み失敗することがあります現在のアプリケーション ドメインと、最初にアセンブリ読み込まれアプリケーション ドメインパス設定異な場合には、それぞれのアプリケーション ドメイン読み込まれアセンブリ異な場合あります

メモメモ

AssemblyName.Name プロパティおよび AssemblyName.CodeBase プロパティ両方設定され場合アセンブリ初回読み込み時に、Assembly.FullName プロパティ返す表示名 (バージョン、カルチャなど) が使用されます。ファイル見つからなかった場合CodeBase プロパティ使用してアセンブリ検索されます。CodeBase使用してアセンブリ見つかった場合表示名アセンブリ比較されます。比較結果一致しない場合FileLoadExceptionスローさます。

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.Load メソッド (String, Evidence)

表示名指定して Assembly読み込みます。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function Load ( _
    assemblyString As String, _
    assemblySecurity As Evidence _
) As Assembly
Dim instance As AppDomain
Dim assemblyString As String
Dim assemblySecurity As Evidence
Dim returnValue As Assembly

returnValue = instance.Load(assemblyString, assemblySecurity)
public Assembly Load (
    string assemblyString,
    Evidence assemblySecurity
)
public:
virtual Assembly^ Load (
    String^ assemblyString, 
    Evidence^ assemblySecurity
) sealed
public final Assembly Load (
    String assemblyString, 
    Evidence assemblySecurity
)
public final function Load (
    assemblyString : String, 
    assemblySecurity : Evidence
) : Assembly

パラメータ

assemblyString

アセンブリ表示名詳細については、Assembly.FullName のトピック参照してください

assemblySecurity

アセンブリ読み込むために必要な証拠

戻り値
読み込み済みアセンブリ

例外例外
例外種類条件

ArgumentNullException

assemblyString is null 参照 (Visual Basic では Nothing)

FileNotFoundException

assemblyString が見つかりません。

BadImageFormatException

assemblyString有効なアセンブリではありません。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメイン試行されています。

FileLoadException

1 つアセンブリまたはモジュール2 つ異な証拠使用して 2 回読込まれました。

解説解説
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.Load メソッド (Byte[])

生成されAssembly を含む COFF (Common Object File Format) ベースイメージ使用してAssembly読み込みます。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function Load ( _
    rawAssembly As Byte() _
) As Assembly
Dim instance As AppDomain
Dim rawAssembly As Byte()
Dim returnValue As Assembly

returnValue = instance.Load(rawAssembly)
public Assembly Load (
    byte[] rawAssembly
)
public:
virtual Assembly^ Load (
    array<unsigned char>^ rawAssembly
) sealed
public final Assembly Load (
    byte[] rawAssembly
)
public final function Load (
    rawAssembly : byte[]
) : Assembly

パラメータ

rawAssembly

生成されアセンブリを含む COFF ベースイメージである byte配列

戻り値
読み込み済みアセンブリ

例外例外
例外種類条件

ArgumentNullException

rawAssemblynull 参照 (Visual Basic では Nothing) です。

BadImageFormatException

rawAssembly有効なアセンブリではありません。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメイン試行されています。

FileLoadException

1 つアセンブリまたはモジュール2 つ異な証拠使用して 2 回読込まれました。

解説解説
使用例使用例

アセンブリ読み込み方法次の例に示します

このコード例実行するには、アセンブリの完全限定名を指定する必要がありますアセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください

Imports System
Imports System.IO
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyType(currentDomain)      ' Failed!

      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolver
      
      InstantiateMyType(currentDomain)      ' OK!
   End Sub 'Main
   
   
   Sub InstantiateMyType(domain As AppDomain)
      Try
     ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyType
   
   
   ' Loads the content of a file to a byte array. 
   Function loadFile(filename As String)
 As Byte()
      Dim fs As New FileStream(filename,
 FileMode.Open)
      Dim buffer(CInt(fs.Length)) As Byte
      fs.Read(buffer, 0, buffer.Length)
      fs.Close()
      
      Return buffer
   End Function 'loadFile
   
   
   Function MyResolver(sender As Object,
 args As ResolveEventArgs) As System.Reflection.Assembly
      Dim domain As AppDomain = DirectCast(sender,
 AppDomain)
      
      ' Once the files are generated, this call is
      ' actually no longer necessary.
      EmitAssembly(domain)
      
      Dim rawAssembly As Byte()
 = loadFile("temp.dll")
      Dim rawSymbolStore As Byte()
 = loadFile("temp.pdb")
      Dim myAssembly As System.Reflection.Assembly
 = domain.Load(rawAssembly, rawSymbolStore)
      
      Return myAssembly
   End Function 'MyResolver
   
   
   ' Creates a dynamic assembly with symbol information
   ' and saves them to temp.dll and temp.pdb
   Sub EmitAssembly(domain As AppDomain)
      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Save)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyModule",
 "temp.dll", True)
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyType",
 TypeAttributes.Public)
      
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      ilGenerator.EmitWriteLine("MyType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      assemblyBuilder.Save("temp.dll")
   End Sub 'EmitAssembly

End Module 'Test
using System;
using System.IO;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;
      
      InstantiateMyType(currentDomain);   // Failed!

      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolver);
      
      InstantiateMyType(currentDomain);   // OK!
   }
   
   static void InstantiateMyType(AppDomain
 domain) {
      try {
     // You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }
   
   // Loads the content of a file to a byte array. 
   static byte[] loadFile(string filename)
 {
      FileStream fs = new FileStream(filename, FileMode.Open);
      byte[] buffer = new byte[(int) fs.Length];
      fs.Read(buffer, 0, buffer.Length);
      fs.Close();
   
      return buffer;
   }   

   static Assembly MyResolver(object sender, ResolveEventArgs
 args) {
      AppDomain domain = (AppDomain) sender;

      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly(domain);
      
      byte[] rawAssembly = loadFile("temp.dll");
      byte[] rawSymbolStore = loadFile("temp.pdb");
      Assembly assembly = domain.Load(rawAssembly, rawSymbolStore);

      return assembly;
   }
   
   // Creates a dynamic assembly with symbol information
   // and saves them to temp.dll and temp.pdb
   static void EmitAssembly(AppDomain domain)
 {
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Save);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyModule",
 "temp.dll", true);
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public);

      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      ilGenerator.EmitWriteLine("MyType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();
      
      assemblyBuilder.Save("temp.dll");
   }
}
using namespace System;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
void InstantiateMyType( AppDomain^ domain )
{
   try
   {
      
      // You must supply a valid fully qualified assembly name here.
      domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyType" );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}


// Loads the content of a file to a Byte array.
array<Byte>^ loadFile( String^ filename )
{
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
   array<Byte>^buffer = gcnew array<Byte>((int)fs->Length);
   fs->Read( buffer, 0, buffer->Length );
   fs->Close();
   return buffer;
}


// Creates a dynamic assembly with symbol information
// and saves them to temp.dll and temp.pdb
void EmitAssembly( AppDomain^ domain )
{
   AssemblyName^ assemblyName = gcnew AssemblyName;
   assemblyName->Name = "MyAssembly";
   AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Save );
   ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyModule",
 "temp.dll", true );
   TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyType", TypeAttributes::Public
 );
   ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor( MethodAttributes::Public,
 CallingConventions::Standard, nullptr );
   ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
   ilGenerator->EmitWriteLine( "MyType instantiated!" );
   ilGenerator->Emit( OpCodes::Ret );
   typeBuilder->CreateType();
   assemblyBuilder->Save( "temp.dll" );
}

ref class Resolver
{
public:
   static Assembly^ MyResolver( Object^ sender, ResolveEventArgs^
 args )
   {
      AppDomain^ domain = dynamic_cast<AppDomain^>(sender);
      
      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly( domain );
      array<Byte>^rawAssembly = loadFile( "temp.dll" );
      array<Byte>^rawSymbolStore = loadFile( "temp.pdb" );
      Assembly^ assembly = domain->Load( rawAssembly, rawSymbolStore );
      return assembly;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   InstantiateMyType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Resolver::MyResolver
 );
   InstantiateMyType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.Load メソッド (String)

表示名指定して Assembly読み込みます。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

ArgumentNullException

assemblyString is null 参照 (Visual Basic では Nothing)

FileNotFoundException

assemblyString が見つかりません。

BadImageFormatException

assemblyString有効なアセンブリではありません。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメイン試行されています。

FileLoadException

1 つアセンブリまたはモジュール2 つ異な証拠使用して 2 回読込まれました。

解説解説
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.Load メソッド (Byte[], Byte[])

生成されAssembly を含む COFF (Common Object File Format) ベースイメージ使用してAssembly読み込みます。Assemblyシンボルを表す生バイト読み込まれます。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function Load ( _
    rawAssembly As Byte(), _
    rawSymbolStore As Byte() _
) As Assembly
Dim instance As AppDomain
Dim rawAssembly As Byte()
Dim rawSymbolStore As Byte()
Dim returnValue As Assembly

returnValue = instance.Load(rawAssembly, rawSymbolStore)
public Assembly Load (
    byte[] rawAssembly,
    byte[] rawSymbolStore
)
public:
virtual Assembly^ Load (
    array<unsigned char>^ rawAssembly, 
    array<unsigned char>^ rawSymbolStore
) sealed
public final Assembly Load (
    byte[] rawAssembly, 
    byte[] rawSymbolStore
)
public final function Load (
    rawAssembly : byte[], 
    rawSymbolStore : byte[]
) : Assembly

パラメータ

rawAssembly

生成されアセンブリを含む COFF ベースイメージである byte配列

rawSymbolStore

アセンブリシンボルを表す生バイト格納している byte 型の配列

戻り値
読み込み済みアセンブリ

例外例外
例外種類条件

ArgumentNullException

rawAssemblynull 参照 (Visual Basic では Nothing) です。

BadImageFormatException

rawAssembly有効なアセンブリではありません。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメイン試行されています。

FileLoadException

1 つアセンブリまたはモジュール2 つ異な証拠使用して 2 回読込まれました。

解説解説
使用例使用例

アセンブリ読み込み方法次の例に示します

このコード例実行するには、アセンブリの完全限定名を指定する必要がありますアセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください

Imports System
Imports System.IO
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyType(currentDomain)      ' Failed!

      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolver
      
      InstantiateMyType(currentDomain)      ' OK!
   End Sub 'Main
   
   
   Sub InstantiateMyType(domain As AppDomain)
      Try
     ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyType
   
   
   ' Loads the content of a file to a byte array. 
   Function loadFile(filename As String)
 As Byte()
      Dim fs As New FileStream(filename,
 FileMode.Open)
      Dim buffer(CInt(fs.Length)) As Byte
      fs.Read(buffer, 0, buffer.Length)
      fs.Close()
      
      Return buffer
   End Function 'loadFile
   
   
   Function MyResolver(sender As Object,
 args As ResolveEventArgs) As System.Reflection.Assembly
      Dim domain As AppDomain = DirectCast(sender,
 AppDomain)
      
      ' Once the files are generated, this call is
      ' actually no longer necessary.
      EmitAssembly(domain)
      
      Dim rawAssembly As Byte()
 = loadFile("temp.dll")
      Dim rawSymbolStore As Byte()
 = loadFile("temp.pdb")
      Dim myAssembly As System.Reflection.Assembly
 = domain.Load(rawAssembly, rawSymbolStore)
      
      Return myAssembly
   End Function 'MyResolver
   
   
   ' Creates a dynamic assembly with symbol information
   ' and saves them to temp.dll and temp.pdb
   Sub EmitAssembly(domain As AppDomain)
      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Save)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyModule",
 "temp.dll", True)
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyType",
 TypeAttributes.Public)
      
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      ilGenerator.EmitWriteLine("MyType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      assemblyBuilder.Save("temp.dll")
   End Sub 'EmitAssembly

End Module 'Test
using System;
using System.IO;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;
      
      InstantiateMyType(currentDomain);   // Failed!

      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolver);
      
      InstantiateMyType(currentDomain);   // OK!
   }
   
   static void InstantiateMyType(AppDomain
 domain) {
      try {
     // You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }
   
   // Loads the content of a file to a byte array. 
   static byte[] loadFile(string filename)
 {
      FileStream fs = new FileStream(filename, FileMode.Open);
      byte[] buffer = new byte[(int) fs.Length];
      fs.Read(buffer, 0, buffer.Length);
      fs.Close();
   
      return buffer;
   }   

   static Assembly MyResolver(object sender, ResolveEventArgs
 args) {
      AppDomain domain = (AppDomain) sender;

      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly(domain);
      
      byte[] rawAssembly = loadFile("temp.dll");
      byte[] rawSymbolStore = loadFile("temp.pdb");
      Assembly assembly = domain.Load(rawAssembly, rawSymbolStore);

      return assembly;
   }
   
   // Creates a dynamic assembly with symbol information
   // and saves them to temp.dll and temp.pdb
   static void EmitAssembly(AppDomain domain)
 {
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Save);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyModule",
 "temp.dll", true);
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public);

      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      ilGenerator.EmitWriteLine("MyType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();
      
      assemblyBuilder.Save("temp.dll");
   }
}
using namespace System;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
void InstantiateMyType( AppDomain^ domain )
{
   try
   {
      
      // You must supply a valid fully qualified assembly name here.
      domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyType" );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}


// Loads the content of a file to a Byte array.
array<Byte>^ loadFile( String^ filename )
{
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
   array<Byte>^buffer = gcnew array<Byte>((int)fs->Length);
   fs->Read( buffer, 0, buffer->Length );
   fs->Close();
   return buffer;
}


// Creates a dynamic assembly with symbol information
// and saves them to temp.dll and temp.pdb
void EmitAssembly( AppDomain^ domain )
{
   AssemblyName^ assemblyName = gcnew AssemblyName;
   assemblyName->Name = "MyAssembly";
   AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Save );
   ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyModule",
 "temp.dll", true );
   TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyType", TypeAttributes::Public
 );
   ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor( MethodAttributes::Public,
 CallingConventions::Standard, nullptr );
   ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
   ilGenerator->EmitWriteLine( "MyType instantiated!" );
   ilGenerator->Emit( OpCodes::Ret );
   typeBuilder->CreateType();
   assemblyBuilder->Save( "temp.dll" );
}

ref class Resolver
{
public:
   static Assembly^ MyResolver( Object^ sender, ResolveEventArgs^
 args )
   {
      AppDomain^ domain = dynamic_cast<AppDomain^>(sender);
      
      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly( domain );
      array<Byte>^rawAssembly = loadFile( "temp.dll" );
      array<Byte>^rawSymbolStore = loadFile( "temp.pdb" );
      Assembly^ assembly = domain->Load( rawAssembly, rawSymbolStore );
      return assembly;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   InstantiateMyType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Resolver::MyResolver
 );
   InstantiateMyType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.Load メソッド (Byte[], Byte[], Evidence)

生成されAssembly を含む COFF (Common Object File Format) ベースイメージ使用してAssembly読み込みます。Assemblyシンボルを表す生バイト読み込まれます。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function Load ( _
    rawAssembly As Byte(), _
    rawSymbolStore As Byte(), _
    securityEvidence As Evidence _
) As Assembly
Dim instance As AppDomain
Dim rawAssembly As Byte()
Dim rawSymbolStore As Byte()
Dim securityEvidence As Evidence
Dim returnValue As Assembly

returnValue = instance.Load(rawAssembly, rawSymbolStore, securityEvidence)
public Assembly Load (
    byte[] rawAssembly,
    byte[] rawSymbolStore,
    Evidence securityEvidence
)
public:
virtual Assembly^ Load (
    array<unsigned char>^ rawAssembly, 
    array<unsigned char>^ rawSymbolStore, 
    Evidence^ securityEvidence
) sealed
public final Assembly Load (
    byte[] rawAssembly, 
    byte[] rawSymbolStore, 
    Evidence securityEvidence
)
public final function Load (
    rawAssembly : byte[], 
    rawSymbolStore : byte[], 
    securityEvidence : Evidence
) : Assembly

パラメータ

rawAssembly

生成されアセンブリを含む COFF ベースイメージである byte配列

rawSymbolStore

アセンブリシンボルを表す生バイト格納している byte 型の配列

securityEvidence

アセンブリ読み込むために必要な証拠

戻り値
読み込み済みアセンブリ

例外例外
例外種類条件

ArgumentNullException

rawAssemblynull 参照 (Visual Basic では Nothing) です。

BadImageFormatException

rawAssembly有効なアセンブリではありません。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメイン試行されています。

FileLoadException

1 つアセンブリまたはモジュール2 つ異な証拠使用して 2 回読込まれました。

解説解説
使用例使用例

アセンブリ読み込み方法次の例に示します

このコード例実行するには、アセンブリの完全限定名を指定する必要がありますアセンブリの完全限定名を取得する方法については、「アセンブリ名」を参照してください

Imports System
Imports System.IO
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyType(currentDomain)      ' Failed!

      AddHandler currentDomain.AssemblyResolve, AddressOf
 MyResolver
      
      InstantiateMyType(currentDomain)      ' OK!
   End Sub 'Main
   
   
   Sub InstantiateMyType(domain As AppDomain)
      Try
     ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture,
 PublicKeyToken", "MyType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyType
   
   
   ' Loads the content of a file to a byte array. 
   Function loadFile(filename As String)
 As Byte()
      Dim fs As New FileStream(filename,
 FileMode.Open)
      Dim buffer(CInt(fs.Length)) As Byte
      fs.Read(buffer, 0, buffer.Length)
      fs.Close()
      
      Return buffer
   End Function 'loadFile
   
   
   Function MyResolver(sender As Object,
 args As ResolveEventArgs) As System.Reflection.Assembly
      Dim domain As AppDomain = DirectCast(sender,
 AppDomain)
      
      ' Once the files are generated, this call is
      ' actually no longer necessary.
      EmitAssembly(domain)
      
      Dim rawAssembly As Byte()
 = loadFile("temp.dll")
      Dim rawSymbolStore As Byte()
 = loadFile("temp.pdb")
      Dim myAssembly As System.Reflection.Assembly
 = domain.Load(rawAssembly, rawSymbolStore)
      
      Return myAssembly
   End Function 'MyResolver
   
   
   ' Creates a dynamic assembly with symbol information
   ' and saves them to temp.dll and temp.pdb
   Sub EmitAssembly(domain As AppDomain)
      Dim assemblyName As New
 AssemblyName()
      assemblyName.Name = "MyAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder
 = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Save)
      Dim moduleBuilder As ModuleBuilder =
 assemblyBuilder.DefineDynamicModule("MyModule",
 "temp.dll", True)
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyType",
 TypeAttributes.Public)
      
      Dim constructorBuilder As ConstructorBuilder
 = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      ilGenerator.EmitWriteLine("MyType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      assemblyBuilder.Save("temp.dll")
   End Sub 'EmitAssembly

End Module 'Test
using System;
using System.IO;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main()
 {
      AppDomain currentDomain = AppDomain.CurrentDomain;
      
      InstantiateMyType(currentDomain);   // Failed!

      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolver);
      
      InstantiateMyType(currentDomain);   // OK!
   }
   
   static void InstantiateMyType(AppDomain
 domain) {
      try {
     // You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
 "MyType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }
   
   // Loads the content of a file to a byte array. 
   static byte[] loadFile(string filename)
 {
      FileStream fs = new FileStream(filename, FileMode.Open);
      byte[] buffer = new byte[(int) fs.Length];
      fs.Read(buffer, 0, buffer.Length);
      fs.Close();
   
      return buffer;
   }   

   static Assembly MyResolver(object sender, ResolveEventArgs
 args) {
      AppDomain domain = (AppDomain) sender;

      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly(domain);
      
      byte[] rawAssembly = loadFile("temp.dll");
      byte[] rawSymbolStore = loadFile("temp.pdb");
      Assembly assembly = domain.Load(rawAssembly, rawSymbolStore);

      return assembly;
   }
   
   // Creates a dynamic assembly with symbol information
   // and saves them to temp.dll and temp.pdb
   static void EmitAssembly(AppDomain domain)
 {
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName,
 AssemblyBuilderAccess.Save);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyModule",
 "temp.dll", true);
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public);

      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public,
 CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      ilGenerator.EmitWriteLine("MyType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();
      
      assemblyBuilder.Save("temp.dll");
   }
}
using namespace System;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
void InstantiateMyType( AppDomain^ domain )
{
   try
   {
      
      // You must supply a valid fully qualified assembly name here.
      domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken",
 "MyType" );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}


// Loads the content of a file to a Byte array.
array<Byte>^ loadFile( String^ filename )
{
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
   array<Byte>^buffer = gcnew array<Byte>((int)fs->Length);
   fs->Read( buffer, 0, buffer->Length );
   fs->Close();
   return buffer;
}


// Creates a dynamic assembly with symbol information
// and saves them to temp.dll and temp.pdb
void EmitAssembly( AppDomain^ domain )
{
   AssemblyName^ assemblyName = gcnew AssemblyName;
   assemblyName->Name = "MyAssembly";
   AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName,
 AssemblyBuilderAccess::Save );
   ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyModule",
 "temp.dll", true );
   TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyType", TypeAttributes::Public
 );
   ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor( MethodAttributes::Public,
 CallingConventions::Standard, nullptr );
   ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
   ilGenerator->EmitWriteLine( "MyType instantiated!" );
   ilGenerator->Emit( OpCodes::Ret );
   typeBuilder->CreateType();
   assemblyBuilder->Save( "temp.dll" );
}

ref class Resolver
{
public:
   static Assembly^ MyResolver( Object^ sender, ResolveEventArgs^
 args )
   {
      AppDomain^ domain = dynamic_cast<AppDomain^>(sender);
      
      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly( domain );
      array<Byte>^rawAssembly = loadFile( "temp.dll" );
      array<Byte>^rawSymbolStore = loadFile( "temp.pdb" );
      Assembly^ assembly = domain->Load( rawAssembly, rawSymbolStore );
      return assembly;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   InstantiateMyType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Resolver::MyResolver
 );
   InstantiateMyType( currentDomain ); // OK!
}

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.Load メソッド (AssemblyName, Evidence)

AssemblyName を指定してAssembly読み込みます。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function Load ( _
    assemblyRef As AssemblyName, _
    assemblySecurity As Evidence _
) As Assembly
Dim instance As AppDomain
Dim assemblyRef As AssemblyName
Dim assemblySecurity As Evidence
Dim returnValue As Assembly

returnValue = instance.Load(assemblyRef, assemblySecurity)
public Assembly Load (
    AssemblyName assemblyRef,
    Evidence assemblySecurity
)
public:
virtual Assembly^ Load (
    AssemblyName^ assemblyRef, 
    Evidence^ assemblySecurity
) sealed
public final Assembly Load (
    AssemblyName assemblyRef, 
    Evidence assemblySecurity
)
public final function Load (
    assemblyRef : AssemblyName, 
    assemblySecurity : Evidence
) : Assembly

パラメータ

assemblyRef

読み込むアセンブリについて記述しているオブジェクト

assemblySecurity

アセンブリ読み込むために必要な証拠

戻り値
読み込み済みアセンブリ

例外例外
例外種類条件

ArgumentNullException

assemblyRef is null 参照 (Visual Basic では Nothing)

FileNotFoundException

assemblyRef が見つかりません。

BadImageFormatException

assemblyRef有効なアセンブリではありません。

AppDomainUnloadedException

操作が、アンロードされたアプリケーション ドメイン試行されています。

FileLoadException

1 つアセンブリまたはモジュール2 つ異な証拠使用して 2 回読込まれました。

解説解説
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AppDomain.Load メソッド


_AppDomain.Load メソッド

COM オブジェクトに、System.AppDomain.Load メソッドへのバージョン依存しないアクセス用意されています。
オーバーロードの一覧オーバーロードの一覧

参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「_AppDomain.Load」の関連用語

_AppDomain.Loadのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



_AppDomain.Loadのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS