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.

Возвращаемое значение

IResourceWriter

Объект 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 равна нулю.The length of name is zero.

-или--or- Длина параметра fileName равна нулю.The length of fileName is zero.

-или--or- fileName содержит путь.fileName includes a path.

Параметр name или fileName имеет значение null.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. В примере модуль записи ресурсов используется для добавления трех строк ресурсов.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

Комментарии

С помощью метода, возвращаемого функцией, можно добавить точные ресурсы ResourceWriter AddResource .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 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1 , этот член больше не требует наличия ReflectionPermission ReflectionPermissionFlag.ReflectionEmit флага.Starting with the .NET Framework 2.0 с пакетом обновления 1 (SP1).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.

Возвращаемое значение

IResourceWriter

Объект 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 равна нулю.The length of name is zero.

-или--or- Длина параметра fileName равна нулю.The length of fileName is zero.

-или--or- fileName содержит путь.fileName includes a path.

Параметр name или fileName имеет значение null.name or fileName is null.

У вызывающего объекта отсутствует необходимое разрешение.The caller does not have the required permission.

Комментарии

Ресурсы с точной детализацией можно добавить с помощью метода, возвращаемого ResourceWriter функцией AddResource .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 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1 , этот член больше не требует наличия ReflectionPermission ReflectionPermissionFlag.ReflectionEmit флага.Starting with the .NET Framework 2.0 с пакетом обновления 1 (SP1).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.

Применяется к