AssemblyBuilder.DefineResource メソッド

定義

このアセンブリのスタンドアロン マネージド リソースを定義します。Defines a standalone managed resource for this assembly.

オーバーロード

DefineResource(String, String, String)

既定のパブリック リソース属性で、このアセンブリのスタンドアロン マネージド リソースを定義します。Defines a standalone managed resource for this assembly with the default public resource attribute.

DefineResource(String, String, String, ResourceAttributes)

このアセンブリのスタンドアロン マネージド リソースを定義します。Defines a standalone managed resource for this assembly. 属性には、マネージド リソースを指定できます。Attributes can be specified for the managed resource.

DefineResource(String, String, String)

既定のパブリック リソース属性で、このアセンブリのスタンドアロン マネージド リソースを定義します。Defines a standalone managed resource for this assembly with the default public resource attribute.

public:
 System::Resources::IResourceWriter ^ DefineResource(System::String ^ name, System::String ^ description, System::String ^ fileName);
public System.Resources.IResourceWriter DefineResource (string name, string description, string fileName);
member this.DefineResource : string * string * string -> System.Resources.IResourceWriter
Public Function DefineResource (name As String, description As String, fileName As String) As IResourceWriter

パラメーター

name
String

リソースの論理名。The logical name of the resource.

description
String

文章によるリソースの説明。A textual description of the resource.

fileName
String

論理名のマップ先物理ファイル名 (.resources ファイル)。The physical file name (.resources file) to which the logical name is mapped. これにはパスを含めないでください。This should not include a path.

戻り値

指定されたリソースの ResourceWriter オブジェクト。A ResourceWriter object for the specified resource.

例外

name は以前に定義されています。name has been previously defined.

または-or- アセンブリには、fileName という名前の別のファイルがあります。There is another file in the assembly named fileName.

または-or- name の長さが 0 です。The length of name is zero.

または-or- fileName の長さが 0 です。The length of fileName is zero.

または-or- fileName にパスが含まれています。fileName includes a path.

name または fileNamenull です。name or fileName is null.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

次の例では、DefineResource メソッドを使用してリソースライターを取得します。The following example uses the DefineResource method to get a resource writer. この例では、リソースライターを使用して、3つのリソース文字列を追加します。The example uses the resource writer to add three resource strings.

using namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Resources;

/*
   The following program demonstrates the 'DefineResource' and 'DefineVersionInfoResource' 
   methods of 'AssemblyBuilder' class. It builds an assembly and a resource file at runtime.
   The unmanaged version information like product, product version, Company, Copyright, 
   trademark are defined with 'DefineVersionInfoResource' method.
*/
static Type^ CreateAssembly( AppDomain^ appDomain );

int main()
{
   AssemblyBuilder^ myAssembly;
   IResourceWriter^ myResourceWriter;
   myAssembly = safe_cast<AssemblyBuilder^>(CreateAssembly( Thread::GetDomain() )->Assembly);
   myResourceWriter = myAssembly->DefineResource( "myResourceFile", "A sample Resource File", "MyEmitAssembly.MyResource.resources" );
   myResourceWriter->AddResource( "AddResource 1", "First added resource" );
   myResourceWriter->AddResource( "AddResource 2", "Second added resource" );
   myResourceWriter->AddResource( "AddResource 3", "Third added resource" );
   myAssembly->DefineVersionInfoResource( "AssemblySample",  "2:0:0:1", "Microsoft Corporation", "@Copyright Microsoft Corp. 1990-2001", ".NET is a trademark of Microsoft Corporation" );
   myAssembly->Save( "MyEmitAssembly.dll" );
}

// Create the callee transient dynamic assembly.
static Type^ CreateAssembly( AppDomain^ appDomain )
{
   AssemblyName^ myAssemblyName = gcnew AssemblyName;
   myAssemblyName->Name = "MyEmitAssembly";
   AssemblyBuilder^ myAssembly = appDomain->DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess::Save );
   ModuleBuilder^ myModule = myAssembly->DefineDynamicModule( "EmittedModule", "EmittedModule.mod" );

   // Define a public class named "HelloWorld" in the assembly.
   TypeBuilder^ helloWorldClass = myModule->DefineType( "HelloWorld", TypeAttributes::Public );

   // Define the Display method.
   MethodBuilder^ myMethod = helloWorldClass->DefineMethod( "Display", MethodAttributes::Public, String::typeid, nullptr );

   // Generate IL for GetGreeting.
   ILGenerator^ methodIL = myMethod->GetILGenerator();
   methodIL->Emit( OpCodes::Ldstr, "Display method get called." );
   methodIL->Emit( OpCodes::Ret );

   // Returns the type HelloWorld.
   return (helloWorldClass->CreateType());
}
public static void Main() 
{
   AssemblyBuilder myAssembly;
   IResourceWriter myResourceWriter; 
   myAssembly = (AssemblyBuilder)CreateAssembly(Thread.GetDomain()).Assembly;
      
   myResourceWriter = myAssembly.DefineResource("myResourceFile",
      "A sample Resource File", "MyEmitAssembly.MyResource.resources");
   myResourceWriter.AddResource("AddResource 1", "First added resource");
   myResourceWriter.AddResource("AddResource 2", "Second added resource");
   myResourceWriter.AddResource("AddResource 3", "Third added resource");

   myAssembly.DefineVersionInfoResource("AssemblySample", "2:0:0:1",
      "Microsoft Corporation", "@Copyright Microsoft Corp. 1990-2001",
      ".NET is a trademark of Microsoft Corporation");
   myAssembly.Save("MyEmitAssembly.dll");
}

// Create the callee transient dynamic assembly.
private static Type CreateAssembly(AppDomain appDomain) 
{
   AssemblyName myAssemblyName = new AssemblyName();
   myAssemblyName.Name = "MyEmitAssembly";
   AssemblyBuilder myAssembly = appDomain.DefineDynamicAssembly(myAssemblyName, 
      AssemblyBuilderAccess.Save);
   ModuleBuilder myModule = myAssembly.DefineDynamicModule("EmittedModule",
      "EmittedModule.mod");

   // Define a public class named "HelloWorld" in the assembly.
   TypeBuilder helloWorldClass = 
      myModule.DefineType("HelloWorld", TypeAttributes.Public);
   // Define the Display method.
   MethodBuilder myMethod = helloWorldClass.DefineMethod("Display", 
      MethodAttributes.Public, typeof(String), null);

   // Generate IL for GetGreeting.
   ILGenerator methodIL = myMethod.GetILGenerator();
   methodIL.Emit(OpCodes.Ldstr, "Display method get called.");
   methodIL.Emit(OpCodes.Ret);

   // Returns the type HelloWorld.
   return(helloWorldClass.CreateType());
}   
Public Shared Sub Main()
   Dim myAssembly As AssemblyBuilder
   Dim myResourceWriter As IResourceWriter
   myAssembly = CType(CreateAssembly(Thread.GetDomain()).Assembly, AssemblyBuilder)
   
   myResourceWriter = myAssembly.DefineResource("myResourceFile", "A sample Resource File", _
                                                      "MyEmitAssembly.MyResource.resources")
   myResourceWriter.AddResource("AddResource 1", "First added resource")
   myResourceWriter.AddResource("AddResource 2", "Second added resource")
   myResourceWriter.AddResource("AddResource 3", "Third added resource")
   
   myAssembly.DefineVersionInfoResource("AssemblySample", "2:0:0:1", "Microsoft Corporation", _
         "@Copyright Microsoft Corp. 1990-2001", ".NET is a trademark of Microsoft Corporation")
   myAssembly.Save("MyEmitAssembly.dll")
End Sub

' Create the callee transient dynamic assembly.
Private Shared Function CreateAssembly(myAppDomain As AppDomain) As Type
   Dim myAssemblyName As New AssemblyName()
   myAssemblyName.Name = "MyEmitAssembly"
   Dim myAssembly As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAssemblyName, _
                                                            AssemblyBuilderAccess.Save)
   Dim myModule As ModuleBuilder = myAssembly.DefineDynamicModule("EmittedModule", _
                                                            "EmittedModule.mod")
   
   ' Define a public class named "HelloWorld" in the assembly.
   Dim helloWorldClass As TypeBuilder = myModule.DefineType("HelloWorld", TypeAttributes.Public)
   ' Define the Display method.
   Dim myMethod As MethodBuilder = helloWorldClass.DefineMethod("Display", _
                                 MethodAttributes.Public, GetType(String), Nothing)
   
   ' Generate IL for GetGreeting.
   Dim methodIL As ILGenerator = myMethod.GetILGenerator()
   methodIL.Emit(OpCodes.Ldstr, "Display method get called.")
   methodIL.Emit(OpCodes.Ret)
   ' Returns the type HelloWorld.
   Return helloWorldClass.CreateType()
End Function 'CreateAssembly

注釈

AddResourceを呼び出すことによって、返された ResourceWriter と共に細かいグレインリソースを追加できます。Fine grain resources can be added with the returned ResourceWriter by calling AddResource.

fileName は、他の永続モジュール、スタンドアロンのマネージリソース、またはスタンドアロンのマニフェストファイルのものと同じにすることはできません。fileName should not be the same as that of any other persistable module, stand-alone managed resource, or the stand-alone manifest file.

ランタイムは、動的アセンブリが保存されるときに Close メソッドを呼び出します。The runtime calls the Close method when the dynamic assembly is saved.

注意

.NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1以降では、このメンバーは ReflectionPermissionFlag.ReflectionEmit フラグで ReflectionPermission する必要がなくなりました。Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (「リフレクション出力のセキュリティの問題」を参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象にする必要があります。(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

DefineResource(String, String, String, ResourceAttributes)

このアセンブリのスタンドアロン マネージド リソースを定義します。Defines a standalone managed resource for this assembly. 属性には、マネージド リソースを指定できます。Attributes can be specified for the managed resource.

public:
 System::Resources::IResourceWriter ^ DefineResource(System::String ^ name, System::String ^ description, System::String ^ fileName, System::Reflection::ResourceAttributes attribute);
public System.Resources.IResourceWriter DefineResource (string name, string description, string fileName, System.Reflection.ResourceAttributes attribute);
member this.DefineResource : string * string * string * System.Reflection.ResourceAttributes -> System.Resources.IResourceWriter
Public Function DefineResource (name As String, description As String, fileName As String, attribute As ResourceAttributes) As IResourceWriter

パラメーター

name
String

リソースの論理名。The logical name of the resource.

description
String

文章によるリソースの説明。A textual description of the resource.

fileName
String

論理名のマップ先物理ファイル名 (.resources ファイル)。The physical file name (.resources file) to which the logical name is mapped. これにはパスを含めないでください。This should not include a path.

attribute
ResourceAttributes

リソースの属性。The resource attributes.

戻り値

指定されたリソースの ResourceWriter オブジェクト。A ResourceWriter object for the specified resource.

例外

name は既に定義済みか、fileName という名前のアセンブリに別のファイルが存在する場合。name has been previously defined or if there is another file in the assembly named fileName.

または-or- name の長さが 0 です。The length of name is zero.

または-or- fileName の長さが 0 です。The length of fileName is zero.

または-or- fileName にパスが含まれています。fileName includes a path.

name または fileNamenull です。name or fileName is null.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

注釈

AddResourceを呼び出すことにより、返された ResourceWriter で粒度の細かいリソースを追加できます。Fine-grain resources can be added with the returned ResourceWriter by calling AddResource.

fileName は、他の永続モジュール、スタンドアロンマネージリソース、またはスタンドアロンマニフェストファイルと同じにすることはできません。fileName should not be the same as that of any other persistable module, standalone managed resource, or the standalone manifest file.

ランタイムは、動的アセンブリが保存されるときに Close メソッドを呼び出します。The runtime calls the Close method when the dynamic assembly is saved.

注意

.NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1以降では、このメンバーは ReflectionPermissionFlag.ReflectionEmit フラグで ReflectionPermission する必要がなくなりました。Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (「リフレクション出力のセキュリティの問題」を参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象にする必要があります。(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

適用対象