AppDomain.Load メソッド

定義

現在のアプリケーション ドメインに Assembly を読み込みます。Loads an Assembly into this application domain.

オーバーロード

Load(Byte[])

生成された Assembly を含む COFF (Common Object File Format) ベースのイメージを使用して、Assembly を読み込みます。Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly.

Load(AssemblyName)

AssemblyName を指定して、Assembly を読み込みます。Loads an Assembly given its AssemblyName.

Load(String)

表示名を指定して Assembly を読み込みます。Loads an Assembly given its display name.

Load(Byte[], Byte[])

生成された Assembly を含む COFF (Common Object File Format) ベースのイメージを使用して、Assembly を読み込みます。Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly. Assembly のシンボルを表す生バイトも読み込まれます。The raw bytes representing the symbols for the Assembly are also loaded.

Load(AssemblyName, Evidence)

AssemblyName を指定して、Assembly を読み込みます。Loads an Assembly given its AssemblyName.

Load(String, Evidence)

表示名を指定して Assembly を読み込みます。Loads an Assembly given its display name.

Load(Byte[], Byte[], Evidence)

生成された Assembly を含む COFF (Common Object File Format) ベースのイメージを使用して、Assembly を読み込みます。Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly. Assembly のシンボルを表す生バイトも読み込まれます。The raw bytes representing the symbols for the Assembly are also loaded.

Load(Byte[])

生成された Assembly を含む COFF (Common Object File Format) ベースのイメージを使用して、Assembly を読み込みます。Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly.

public:
 virtual System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly);
public System.Reflection.Assembly Load (byte[] rawAssembly);
abstract member Load : byte[] -> System.Reflection.Assembly
override this.Load : byte[] -> System.Reflection.Assembly
Public Function Load (rawAssembly As Byte()) As Assembly

パラメーター

rawAssembly
Byte[]

生成されたアセンブリを含む COFF ベースのイメージである byte 型配列。An array of type byte that is a COFF-based image containing an emitted assembly.

戻り値

読み込まれるアセンブリ。The loaded assembly.

実装

例外

rawAssemblynull です。rawAssembly is null.

rawAssembly は正しいアセンブリではありません。rawAssembly is not a valid assembly.

- または --or- 共通言語ランタイムのバージョン 2.0 以降が現在読み込まれています。rawAssembly は、より新しいバージョンでコンパイルされています。Version 2.0 or later of the common language runtime is currently loaded and rawAssembly was compiled with a later version.

アンロードされたアプリケーション ドメインで操作しようとします。The operation is attempted on an unloaded application domain.

アセンブリまたはモジュールが、2 つの異なる証拠を使用して 2 回読み込まれました。An assembly or module was loaded twice with two different evidences.

次のサンプルは、未加工のアセンブリの読み込みの使用方法を示しています。The following sample demonstrates the use of loading a raw assembly.

このコード例を実行するには、完全修飾アセンブリ名を指定する必要があります。For this code example to run, you must provide the fully qualified assembly name. 完全修飾アセンブリ名を取得する方法については、「アセンブリ名」を参照してください。For information about how to obtain the fully qualified assembly name, see Assembly Names.

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!
}

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

End Module 'Test

注釈

.NET Framework 4.NET Framework 4以降、このメソッドを使用して読み込まれるアセンブリの信頼レベルは、アプリケーションドメインの信頼レベルと同じになります。Beginning with the .NET Framework 4.NET Framework 4, the trust level of an assembly that is loaded by using this method is the same as the trust level of the application domain.

このメソッドは、現在のアプリケーションドメインにアセンブリを読み込む場合にのみ使用してください。This method should be used only to load an assembly into the current application domain. このメソッドは、静的 Assembly.Load メソッドを呼び出すことができない、相互運用性を持つ呼び出し元の便宜的な手段として提供されています。This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. アセンブリを他のアプリケーションドメインに読み込むには、CreateInstanceAndUnwrapなどのメソッドを使用します。To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

このメソッドのすべてのオーバーロードに共通の情報については、Load(AssemblyName) メソッドのオーバーロードに関する説明を参照してください。For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

セキュリティ

FileIOPermission
ファイルまたはディレクトリから読み取るアクセス許可、およびパス自体の情報にアクセスするための。for access to read from a file or directory, and for access to the information in the path itself. 関連付けられた列挙型: ReadPathDiscoveryAssociated enumerations: Read, PathDiscovery.

Load(AssemblyName)

AssemblyName を指定して、Assembly を読み込みます。Loads an Assembly given its AssemblyName.

public:
 virtual System::Reflection::Assembly ^ Load(System::Reflection::AssemblyName ^ assemblyRef);
public System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef);
abstract member Load : System.Reflection.AssemblyName -> System.Reflection.Assembly
override this.Load : System.Reflection.AssemblyName -> System.Reflection.Assembly
Public Function Load (assemblyRef As AssemblyName) As Assembly

パラメーター

assemblyRef
AssemblyName

読み込むアセンブリについて記述しているオブジェクト。An object that describes the assembly to load.

戻り値

読み込まれるアセンブリ。The loaded assembly.

実装

例外

assemblyRefnull です。assemblyRef is null.

assemblyRef が見つかりません。assemblyRef is not found.

assemblyRef は正しいアセンブリではありません。assemblyRef is not a valid assembly.

- または --or- 共通言語ランタイムのバージョン 2.0 以降が現在読み込まれています。assemblyRef は、より新しいバージョンでコンパイルされています。Version 2.0 or later of the common language runtime is currently loaded and assemblyRef was compiled with a later version.

アンロードされたアプリケーション ドメインで操作しようとします。The operation is attempted on an unloaded application domain.

アセンブリまたはモジュールが、2 つの異なる証拠を使用して 2 回読み込まれました。An assembly or module was loaded twice with two different evidences.

注釈

このメソッドは、現在のアプリケーションドメインにアセンブリを読み込む場合にのみ使用してください。This method should be used only to load an assembly into the current application domain. このメソッドは、静的 Assembly.Load メソッドを呼び出すことができない、相互運用性を持つ呼び出し元の便宜的な手段として提供されています。This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. アセンブリを他のアプリケーションドメインに読み込むには、CreateInstanceAndUnwrapなどのメソッドを使用します。To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

要求されたアセンブリのバージョンが既に読み込まれている場合、このメソッドは、別のバージョンが要求された場合でも、読み込まれたアセンブリを返します。If a version of the requested assembly is already loaded, this method returns the loaded assembly, even if a different version is requested.

assemblyRef の部分的なアセンブリ名を指定することは推奨されません。Supplying a partial assembly name for assemblyRef is not recommended. (部分名は、カルチャ、バージョン、または公開キートークンの1つ以上を省略します。(A partial name omits one or more of culture, version, or public key token. AssemblyName オブジェクトではなく文字列を受け取るオーバーロードでは、"MyAssembly, Version = 1.0.0.0" という部分名の例として "myassembly, version = 1.0.0.0, Culture = ニュートラル, PublicKeyToken = 18ab344 2da84 b47" が完全名の例です)。名前の一部を使用すると、パフォーマンスに悪影響を及ぼします。For overloads that take a string instead of an AssemblyName object, "MyAssembly, Version=1.0.0.0" is an example of a partial name and "MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=18ab3442da84b47" is an example of a full name.) Using partial names has a negative effect on performance. また、アセンブリの部分的な名前は、アプリケーションのベースディレクトリ (BaseDirectory または AppDomainSetup.ApplicationBase) にアセンブリの正確なコピーが存在する場合にのみ、グローバルアセンブリキャッシュからアセンブリを読み込むことができます。In addition, a partial assembly name can load an assembly from the global assembly cache only if there is an exact copy of the assembly in the application base directory (BaseDirectory or AppDomainSetup.ApplicationBase).

現在の AppDomain オブジェクトがアプリケーションドメイン Aを表し、Load メソッドがアプリケーションドメイン Bから呼び出された場合、アセンブリは両方のアプリケーションドメインに読み込まれます。If the current AppDomain object represents application domain A, and the Load method is called from application domain B, the assembly is loaded into both application domains. たとえば、次のコードは、MyAssembly を新しいアプリケーションドメイン ChildDomain と、コードが実行されるアプリケーションドメインに読み込みます。For example, the following code loads MyAssembly into the new application domain ChildDomain and also into the application domain where the code executes:

AppDomain^ ad = AppDomain::CreateDomain("ChildDomain");
ad->Load("MyAssembly");
AppDomain ad = AppDomain.CreateDomain("ChildDomain");
ad.Load("MyAssembly");
Dim ad As AppDomain  = AppDomain.CreateDomain("ChildDomain")
ad.Load("MyAssembly")

AssemblyMarshalByRefObjectから派生しないため、アセンブリは両方のドメインに読み込まれます。したがって、Load メソッドの戻り値をマーシャリングすることはできません。The assembly is loaded into both domains because Assembly does not derive from MarshalByRefObject, and therefore the return value of the Load method cannot be marshaled. 代わりに、共通言語ランタイムは、呼び出し元のアプリケーションドメインにアセンブリを読み込もうとします。Instead, the common language runtime tries to load the assembly into the calling application domain. 2つのアプリケーションドメインに読み込まれるアセンブリは、2つのアプリケーションドメインのパス設定が異なる場合は異なる場合があります。The assemblies that are loaded into the two application domains might be different if the path settings for the two application domains are different.

注意

AssemblyName.Name プロパティと AssemblyName.CodeBase プロパティの両方が設定されている場合、最初にアセンブリを読み込もうとしたときに、Assembly.FullName プロパティによって返された表示名 (バージョン、カルチャなど) が使用されます。If both the AssemblyName.Name property and the AssemblyName.CodeBase property are set, the first attempt to load the assembly uses the display name (including version, culture, and so on, as returned by the Assembly.FullName property). ファイルが見つからない場合は、CodeBase プロパティを使用してアセンブリを検索します。If the file is not found, the CodeBase property is used to search for the assembly. CodeBaseを使用してアセンブリが見つかった場合、表示名がアセンブリと照合されます。If the assembly is found using CodeBase, the display name is matched against the assembly. 一致が失敗した場合は、FileLoadException がスローされます。If the match fails, a FileLoadException is thrown.

セキュリティ

FileIOPermission
ファイルまたはディレクトリから読み取るアクセス許可、およびパス自体の情報にアクセスするための。for access to read from a file or directory, and for access to the information in the path itself. 関連付けられた列挙型: ReadPathDiscoveryAssociated enumerations: Read, PathDiscovery.

Load(String)

表示名を指定して Assembly を読み込みます。Loads an Assembly given its display name.

public:
 virtual System::Reflection::Assembly ^ Load(System::String ^ assemblyString);
public System.Reflection.Assembly Load (string assemblyString);
abstract member Load : string -> System.Reflection.Assembly
override this.Load : string -> System.Reflection.Assembly
Public Function Load (assemblyString As String) As Assembly

パラメーター

assemblyString
String

アセンブリの表示名。The display name of the assembly. 以下を参照してください。FullNameSee FullName.

戻り値

読み込まれるアセンブリ。The loaded assembly.

実装

例外

assemblyStringnull ですassemblyString is null

assemblyStringassemblyString is not found.

assemblyString は正しいアセンブリではありません。assemblyString is not a valid assembly.

- または --or- 共通言語ランタイムのバージョン 2.0 以降が現在読み込まれています。assemblyString は、より新しいバージョンでコンパイルされています。Version 2.0 or later of the common language runtime is currently loaded and assemblyString was compiled with a later version.

アンロードされたアプリケーション ドメインで操作しようとします。The operation is attempted on an unloaded application domain.

アセンブリまたはモジュールが、2 つの異なる証拠を使用して 2 回読み込まれました。An assembly or module was loaded twice with two different evidences.

注釈

このメソッドは、現在のアプリケーションドメインにアセンブリを読み込む場合にのみ使用してください。This method should be used only to load an assembly into the current application domain. このメソッドは、静的 Assembly.Load メソッドを呼び出すことができない、相互運用性を持つ呼び出し元の便宜的な手段として提供されています。This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. アセンブリを他のアプリケーションドメインに読み込むには、CreateInstanceAndUnwrapなどのメソッドを使用します。To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

このメソッドのすべてのオーバーロードに共通の情報については、Load(AssemblyName) メソッドのオーバーロードに関する説明を参照してください。For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

セキュリティ

FileIOPermission
ファイルまたはディレクトリから読み取るアクセス許可、およびパス自体の情報にアクセスするための。for access to read from a file or directory, and for access to the information in the path itself. 関連付けられた列挙型: ReadPathDiscoveryAssociated enumerations: Read, PathDiscovery.

WebPermission
アセンブリがローカルでない場合に、アセンブリの場所にアクセスする権限。for the ability to access the location of the assembly if the assembly is not local.

Load(Byte[], Byte[])

生成された Assembly を含む COFF (Common Object File Format) ベースのイメージを使用して、Assembly を読み込みます。Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly. Assembly のシンボルを表す生バイトも読み込まれます。The raw bytes representing the symbols for the Assembly are also loaded.

public:
 virtual System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore);
public System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore);
abstract member Load : byte[] * byte[] -> System.Reflection.Assembly
override this.Load : byte[] * byte[] -> System.Reflection.Assembly
Public Function Load (rawAssembly As Byte(), rawSymbolStore As Byte()) As Assembly

パラメーター

rawAssembly
Byte[]

生成されたアセンブリを含む COFF ベースのイメージである byte 型配列。An array of type byte that is a COFF-based image containing an emitted assembly.

rawSymbolStore
Byte[]

アセンブリのシンボルを表す生バイトを格納している byte 型の配列。An array of type byte containing the raw bytes representing the symbols for the assembly.

戻り値

読み込まれるアセンブリ。The loaded assembly.

実装

例外

rawAssemblynull です。rawAssembly is null.

rawAssembly は正しいアセンブリではありません。rawAssembly is not a valid assembly.

- または --or- 共通言語ランタイムのバージョン 2.0 以降が現在読み込まれています。rawAssembly は、より新しいバージョンでコンパイルされています。Version 2.0 or later of the common language runtime is currently loaded and rawAssembly was compiled with a later version.

アンロードされたアプリケーション ドメインで操作しようとします。The operation is attempted on an unloaded application domain.

アセンブリまたはモジュールが、2 つの異なる証拠を使用して 2 回読み込まれました。An assembly or module was loaded twice with two different evidences.

次のサンプルは、未加工のアセンブリの読み込みの使用方法を示しています。The following sample demonstrates the use of loading a raw assembly.

このコード例を実行するには、完全修飾アセンブリ名を指定する必要があります。For this code example to run, you must provide the fully qualified assembly name. 完全修飾アセンブリ名を取得する方法については、「アセンブリ名」を参照してください。For information about how to obtain the fully qualified assembly name, see Assembly Names.

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!
}

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

End Module 'Test

注釈

.NET Framework 4.NET Framework 4以降、このメソッドを使用して読み込まれるアセンブリの信頼レベルは、アプリケーションドメインの信頼レベルと同じになります。Beginning with the .NET Framework 4.NET Framework 4, the trust level of an assembly that is loaded by using this method is the same as the trust level of the application domain.

このメソッドは、現在のアプリケーションドメインにアセンブリを読み込む場合にのみ使用してください。This method should be used only to load an assembly into the current application domain. このメソッドは、静的 Assembly.Load メソッドを呼び出すことができない、相互運用性を持つ呼び出し元の便宜的な手段として提供されています。This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. アセンブリを他のアプリケーションドメインに読み込むには、CreateInstanceAndUnwrapなどのメソッドを使用します。To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

このメソッドのすべてのオーバーロードに共通の情報については、Load(AssemblyName) メソッドのオーバーロードに関する説明を参照してください。For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

セキュリティ

WebPermission
"file://" で始まらない URI を読み取る場合。for reading a URI that does not begin with "file://".

FileIOPermission
ファイルまたはディレクトリから読み取るアクセス許可、およびパス自体の情報にアクセスするための。for access to read from a file or directory, and for access to the information in the path itself. 関連付けられた列挙型: ReadPathDiscoveryAssociated enumerations: Read, PathDiscovery.

Load(AssemblyName, Evidence)

警告

この API は現在使われていません。

AssemblyName を指定して、Assembly を読み込みます。Loads an Assembly given its AssemblyName.

public:
 System::Reflection::Assembly ^ Load(System::Reflection::AssemblyName ^ assemblyRef, System::Security::Policy::Evidence ^ assemblySecurity);
[System.Obsolete("Use an overload that does not take an Evidence parameter")]
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See https://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity);
member this.Load : System.Reflection.AssemblyName * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Function Load (assemblyRef As AssemblyName, assemblySecurity As Evidence) As Assembly

パラメーター

assemblyRef
AssemblyName

読み込むアセンブリについて記述しているオブジェクト。An object that describes the assembly to load.

assemblySecurity
Evidence

アセンブリを読み込むために必要な証拠。Evidence for loading the assembly.

戻り値

読み込まれるアセンブリ。The loaded assembly.

実装

属性

例外

assemblyRefnull ですassemblyRef is null

assemblyRefassemblyRef is not found.

assemblyRef は正しいアセンブリではありません。assemblyRef is not a valid assembly.

- または --or- 共通言語ランタイムのバージョン 2.0 以降が現在読み込まれています。assemblyRef は、より新しいバージョンでコンパイルされています。Version 2.0 or later of the common language runtime is currently loaded and assemblyRef was compiled with a later version.

アンロードされたアプリケーション ドメインで操作しようとします。The operation is attempted on an unloaded application domain.

アセンブリまたはモジュールが、2 つの異なる証拠を使用して 2 回読み込まれました。An assembly or module was loaded twice with two different evidences.

注釈

このメソッドは、現在のアプリケーションドメインにアセンブリを読み込む場合にのみ使用してください。This method should be used only to load an assembly into the current application domain. このメソッドは、静的 Assembly.Load メソッドを呼び出すことができない、相互運用性を持つ呼び出し元の便宜的な手段として提供されています。This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. アセンブリを他のアプリケーションドメインに読み込むには、CreateInstanceAndUnwrapなどのメソッドを使用します。To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

このメソッドのすべてのオーバーロードに共通の情報については、Load(AssemblyName) メソッドのオーバーロードに関する説明を参照してください。For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

セキュリティ

FileIOPermission
ファイルまたはディレクトリから読み取るアクセス許可、およびパス自体の情報にアクセスするための。for access to read from a file or directory, and for access to the information in the path itself. 関連付けられた列挙型: ReadPathDiscoveryAssociated enumerations: Read, PathDiscovery.

SecurityPermission
証拠を使用してアセンブリを読み込む場合は。to load an assembly with evidence. ControlEvidence (関連する列挙体)Associated enumeration: ControlEvidence.

WebPermission
"file://" または "\"\"または" c:\"の形式ではないパスを読み取る場合。for reading a path that is not in the form "file://" or "\\UNC\dir\" or "c:\".

Load(String, Evidence)

警告

この API は現在使われていません。

表示名を指定して Assembly を読み込みます。Loads an Assembly given its display name.

public:
 System::Reflection::Assembly ^ Load(System::String ^ assemblyString, System::Security::Policy::Evidence ^ assemblySecurity);
[System.Obsolete("Use an overload that does not take an Evidence parameter")]
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See https://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Assembly Load (string assemblyString, System.Security.Policy.Evidence assemblySecurity);
member this.Load : string * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Function Load (assemblyString As String, assemblySecurity As Evidence) As Assembly

パラメーター

assemblyString
String

アセンブリの表示名。The display name of the assembly. 以下を参照してください。FullNameSee FullName.

assemblySecurity
Evidence

アセンブリを読み込むために必要な証拠。Evidence for loading the assembly.

戻り値

読み込まれるアセンブリ。The loaded assembly.

実装

属性

例外

assemblyStringnull ですassemblyString is null

assemblyStringassemblyString is not found.

assemblyString は正しいアセンブリではありません。assemblyString is not a valid assembly.

- または --or- 共通言語ランタイムのバージョン 2.0 以降が現在読み込まれています。assemblyString は、より新しいバージョンでコンパイルされています。Version 2.0 or later of the common language runtime is currently loaded and assemblyString was compiled with a later version.

アンロードされたアプリケーション ドメインで操作しようとします。The operation is attempted on an unloaded application domain.

アセンブリまたはモジュールが、2 つの異なる証拠を使用して 2 回読み込まれました。An assembly or module was loaded twice with two different evidences.

注釈

このメソッドは、現在のアプリケーションドメインにアセンブリを読み込む場合にのみ使用してください。This method should be used only to load an assembly into the current application domain. このメソッドは、静的 Assembly.Load メソッドを呼び出すことができない、相互運用性を持つ呼び出し元の便宜的な手段として提供されています。This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. アセンブリを他のアプリケーションドメインに読み込むには、CreateInstanceAndUnwrapなどのメソッドを使用します。To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

このメソッドのすべてのオーバーロードに共通の情報については、Load(AssemblyName) メソッドのオーバーロードに関する説明を参照してください。For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

セキュリティ

SecurityPermission
証拠を使用してアセンブリを読み込む場合は。to load an assembly with evidence. ControlEvidence (関連する列挙体)Associated enumeration: ControlEvidence.

FileIOPermission
ファイルまたはディレクトリから読み取るアクセス許可、およびパス自体の情報にアクセスするための。for access to read from a file or directory, and for access to the information in the path itself. 関連付けられた列挙型: ReadPathDiscoveryAssociated enumerations: Read, PathDiscovery.

WebPermission
"file://" または "\"\"または" c:\"の形式ではないパスを読み取る場合。for reading a path that is not in the form "file://" or "\\UNC\dir\" or "c:\".

Load(Byte[], Byte[], Evidence)

警告

この API は現在使われていません。

生成された Assembly を含む COFF (Common Object File Format) ベースのイメージを使用して、Assembly を読み込みます。Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly. Assembly のシンボルを表す生バイトも読み込まれます。The raw bytes representing the symbols for the Assembly are also loaded.

public:
 System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore, System::Security::Policy::Evidence ^ securityEvidence);
[System.Obsolete("Use an overload that does not take an Evidence parameter")]
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See https://go.microsoft.com/fwlink/?LinkId=155570 for more information.")]
public System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence);
member this.Load : byte[] * byte[] * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Function Load (rawAssembly As Byte(), rawSymbolStore As Byte(), securityEvidence As Evidence) As Assembly

パラメーター

rawAssembly
Byte[]

生成されたアセンブリを含む COFF ベースのイメージである byte 型配列。An array of type byte that is a COFF-based image containing an emitted assembly.

rawSymbolStore
Byte[]

アセンブリのシンボルを表す生バイトを格納している byte 型の配列。An array of type byte containing the raw bytes representing the symbols for the assembly.

securityEvidence
Evidence

アセンブリを読み込むために必要な証拠。Evidence for loading the assembly.

戻り値

読み込まれるアセンブリ。The loaded assembly.

実装

属性

例外

rawAssemblynull です。rawAssembly is null.

rawAssembly は正しいアセンブリではありません。rawAssembly is not a valid assembly.

- または --or- 共通言語ランタイムのバージョン 2.0 以降が現在読み込まれています。rawAssembly は、より新しいバージョンでコンパイルされています。Version 2.0 or later of the common language runtime is currently loaded and rawAssembly was compiled with a later version.

アンロードされたアプリケーション ドメインで操作しようとします。The operation is attempted on an unloaded application domain.

アセンブリまたはモジュールが、2 つの異なる証拠を使用して 2 回読み込まれました。An assembly or module was loaded twice with two different evidences.

securityEvidencenull ではありません。securityEvidence is not null. レガシ CAS ポリシーが有効でない場合は、securityEvidencenull にする必要があります。When legacy CAS policy is not enabled, securityEvidence should be null.

次のサンプルは、未加工のアセンブリの読み込みの使用方法を示しています。The following sample demonstrates the use of loading a raw assembly.

このコード例を実行するには、完全修飾アセンブリ名を指定する必要があります。For this code example to run, you must provide the fully qualified assembly name. 完全修飾アセンブリ名を取得する方法については、「アセンブリ名」を参照してください。For information about how to obtain the fully qualified assembly name, see Assembly Names.

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!
}

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

End Module 'Test

注釈

.NET Framework 4.NET Framework 4以降、このメソッドを使用して読み込まれるアセンブリの信頼レベルは、アプリケーションドメインの信頼レベルと同じになります。Beginning with the .NET Framework 4.NET Framework 4, the trust level of an assembly that is loaded by using this method is the same as the trust level of the application domain.

このメソッドは、現在のアプリケーションドメインにアセンブリを読み込む場合にのみ使用してください。This method should be used only to load an assembly into the current application domain. このメソッドは、静的 Assembly.Load メソッドを呼び出すことができない、相互運用性を持つ呼び出し元の便宜的な手段として提供されています。This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. アセンブリを他のアプリケーションドメインに読み込むには、CreateInstanceAndUnwrapなどのメソッドを使用します。To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

このメソッドのすべてのオーバーロードに共通の情報については、Load(AssemblyName) メソッドのオーバーロードに関する説明を参照してください。For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

セキュリティ

SecurityPermission
証拠を提供します。to provide evidence. ControlEvidence (関連する列挙体)Associated enumeration: ControlEvidence. セキュリティアクション: DemandSecurity action: Demand.

FileIOPermission
ファイルまたはディレクトリから読み取るアクセス許可、およびパス自体の情報にアクセスするための。for access to read from a file or directory, and for access to the information in the path itself. 関連付けられた列挙型: ReadPathDiscoveryAssociated enumerations: Read, PathDiscovery.

WebPermission
"file://" または "\"\"または" c:\"の形式ではないパスを読み取る場合。for reading a path that is not in the form "file://" or "\\UNC\dir\" or "c:\".

適用対象