_AppDomain.Load メソッドとは?

辞典・百科事典の検索サービス - Weblio辞書

初めての方へ

参加元一覧


用語解説|全文検索

.NET Framework クラス ライブラリ リファレンス

日本マイクロソフト株式会社日本マイクロソフト株式会社

_AppDomain.Load メソッド

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

参照参照

AppDomain.Load メソッド (AssemblyName)

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

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

Dim instance As AppDomain
Dim assemblyRef As AssemblyName
Dim returnValue As Assembly

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

パラメータ

assemblyRef

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

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

例外例外
例外種類条件

ArgumentNullException

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

FileNotFoundException

assemblyRef が見つかりません。

BadImageFormatException

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

AppDomainUnloadedException

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

FileLoadException

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

解説解説

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

現在のアプリケーション ドメインではない対象アプリケーション ドメインLoad呼び出そうとすると、対象アプリケーション ドメインアセンブリが正常に読み込まれます。AssemblyMarshalByRefObject ではないため、読み込まれたアセンブリ対す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 内)
構文構文

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

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

パラメータ

assemblyString

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

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

例外例外
例外種類条件

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 メソッドのページへのリンク
_AppDomain.Load メソッドのお隣キーワード
モバイル
モバイル版のWeblioは、下記のURLからアクセスしてください。
http://m.weblio.jp/
_ _   


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

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

©2012 Weblio RSS