AssemblyBuilder::DefineUnmanagedResource Method (String^)

 

Defines an unmanaged resource file for this assembly given the name of the resource file.

Namespace:   System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)

public:
void DefineUnmanagedResource(
	String^ resourceFileName
)

Parameters

resourceFileName
Type: System::String^

The name of the resource file.

Exception Condition
ArgumentException

An unmanaged resource was previously defined.

-or-

The file resourceFileName is not readable.

-or-

resourceFileName is the empty string ("").

ArgumentNullException

resourceFileName is null.

FileNotFoundException

resourceFileName is not found.

-or-

resourceFileName is a directory.

SecurityException

The caller does not have the required permission.

An assembly can be associated with only one unmanaged resource. This means that calling DefineVersionInfoResource or DefineUnmanagedResource after either one of the methods was called previously will throw the System.ArgumentException. Multiple unmanaged resources need to be merged with a tool such as the Microsoft ResMerge utility (not supplied with the common language runtime).

System_CAPS_noteNote

Starting with the .NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag::ReflectionEmit flag. (See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5 or later.

The example below demonstrates a call to DefineUnmanagedResource, passing an external resource file.

void main()
{
   AssemblyBuilder^ myAssembly = CreateAssembly("MyEmitTestAssembly");

   // Defines a standalone managed resource for this assembly.
   IResourceWriter^ myResourceWriter = 
      myAssembly->DefineResource( "myResourceFile", "A sample Resource File", 
         "MyAssemblyResource.resources", ResourceAttributes::Private );

   myResourceWriter->AddResource( "AddResource Test", "Testing for the added resource" );

   myAssembly->Save(myAssembly->GetName()->Name + ".dll" );

   // Defines an unmanaged resource file for this assembly.
   myAssembly->DefineUnmanagedResource(  "MyAssemblyResource.resources" );
};

ReflectionPermission

when invoked late-bound through mechanisms such as Type::InvokeMember. Associated enumeration: ReflectionPermissionFlag::MemberAccess.

FileIOPermission

The FileIOPermissionAccess.Read permission is needed to access the resource file resourceFileName.

.NET Framework
Available since 1.1
Return to top
Show: