Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo AssemblyBuilder.AddResourceFile (String, String)

 

Data di pubblicazione: novembre 2016

Aggiunge un file di risorse esistenti a questo assembly.

Spazio dei nomi:   System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)

public void AddResourceFile(
	string name,
	string fileName
)

Parametri

name
Type: System.String

Nome logico della risorsa.

fileName
Type: System.String

Nome fisico del file (file con estensione resources) a cui è mappato il nome logico. Non deve includere un percorso. Il file deve trovarsi nella stessa directory dell'assembly a cui viene aggiunto.

Exception Condition
ArgumentException

L'oggetto name è stato definito in precedenza.

-oppure-

C'è un altro file nell'assembly denominato fileName.

-oppure-

La lunghezza di name è zero.

-oppure-

La lunghezza di fileName è zero oppure fileName include un percorso.

ArgumentNullException

name o fileName è null.

FileNotFoundException

Il file fileName non è stato trovato.

SecurityException

Il chiamante non dispone dell'autorizzazione richiesta.

fileName should not be the same as that of any other persistable module, standalone managed resource, or the standalone manifest file.

The managed resources in the file are assumed to be public.

The specified resource file must be in the directory where the assembly will be saved.

System_CAPS_noteNota

Starting with the net_v20sp1_long, this member no longer requires T:System.Security.Permissions.ReflectionPermission with the F:System.Security.Permissions.ReflectionPermissionFlag.ReflectionEmit flag. (See Security Issues in Reflection Emit.) To use this functionality, your application should target the net_v35_long or later.

The following code sample demonstrates how to attach a resource file to a dynamically created assembly, using AddResourceFile.


using System;
using System.IO;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;

class AsmBuilderGetFileDemo

{
   private static string myResourceFileName = "MyResource.txt";

   private static FileInfo CreateResourceFile() 
   {

     	FileInfo f = new FileInfo(myResourceFileName); 
	StreamWriter sw = f.CreateText();

	sw.WriteLine("Hello, world!");

	sw.Close();

	return f;

   }

   private static AssemblyBuilder BuildDynAssembly()
   {

	string myAsmFileName = "MyAsm.dll";

	AppDomain myDomain = Thread.GetDomain();
	AssemblyName myAsmName = new AssemblyName();
	myAsmName.Name = "MyDynamicAssembly";	

	AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
						myAsmName,
						AssemblyBuilderAccess.RunAndSave);

	myAsmBuilder.AddResourceFile("MyResource", myResourceFileName);

	// To confirm that the resource file has been added to the manifest,
	// we will save the assembly as MyAsm.dll. You can view the manifest
	// and confirm the presence of the resource file by running 
	// "ildasm MyAsm.dll" from the prompt in the directory where you executed
	// the compiled code. 

	myAsmBuilder.Save(myAsmFileName);	

	return myAsmBuilder;

   }

   public static void Main() 
   {

	FileStream myResourceFS = null;

	CreateResourceFile();

	Console.WriteLine("The contents of MyResource.txt, via GetFile:");

	AssemblyBuilder myAsm = BuildDynAssembly();

	try 
        {
	   myResourceFS = myAsm.GetFile(myResourceFileName);
        }
	catch (NotSupportedException)
	{
	   Console.WriteLine("---");
	   Console.WriteLine("System.Reflection.Emit.AssemblyBuilder.GetFile\nis not supported " +
			     "in this SDK build.");
	   Console.WriteLine("The file data will now be retrieved directly, via a new FileStream.");
	   Console.WriteLine("---");
	   myResourceFS = new FileStream(myResourceFileName, 
					 FileMode.Open);
	}

	StreamReader sr = new StreamReader(myResourceFS, System.Text.Encoding.ASCII);
	Console.WriteLine(sr.ReadToEnd());
	sr.Close();

   }

}

ReflectionPermission

when invoked late-bound through mechanisms such as M:System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]). Associated enumeration: F:System.Security.Permissions.ReflectionPermissionFlag.MemberAccess.

FileIOPermission

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

.NET Framework
Disponibile da 1.1
Silverlight
Disponibile da 2.0
Torna all'inizio
Mostra: