AssemblyBuilder.AddResourceFile Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přidá existující soubor prostředků do tohoto sestavení.
Přetížení
| AddResourceFile(String, String) |
Přidá existující soubor prostředků do tohoto sestavení. |
| AddResourceFile(String, String, ResourceAttributes) |
Přidá existující soubor prostředků do tohoto sestavení. |
AddResourceFile(String, String)
Přidá existující soubor prostředků do tohoto sestavení.
public:
void AddResourceFile(System::String ^ name, System::String ^ fileName);
public void AddResourceFile(string name, string fileName);
member this.AddResourceFile : string * string -> unit
Public Sub AddResourceFile (name As String, fileName As String)
Parametry
- name
- String
Logický název prostředku.
- fileName
- String
Název fyzického souboru (soubor .resources), na který je namapován logický název. To by nemělo zahrnovat cestu; soubor musí být ve stejném adresáři jako sestavení, do kterého je přidán.
Výjimky
name byla definována dříve.
-nebo-
V sestavení je další soubor s názvem fileName.
-nebo-
Délka je name nula.
-nebo-
Délka fileName je nula, nebo pokud fileName obsahuje cestu.
name nebo fileName je null.
Soubor fileName nebyl nalezen.
Volající nemá požadované oprávnění.
Příklady
Následující ukázka kódu ukazuje, jak připojit soubor prostředku k dynamicky vytvořenému sestavení pomocí 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();
}
}
Imports System.IO
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
_
Class AsmBuilderGetFileDemo
Private Shared myResourceFileName As String = "MyResource.txt"
Private Shared Function CreateResourceFile() As FileInfo
Dim f As New FileInfo(myResourceFileName)
Dim sw As StreamWriter = f.CreateText()
sw.WriteLine("Hello, world!")
sw.Close()
Return f
End Function 'CreateResourceFile
Private Shared Function BuildDynAssembly() As AssemblyBuilder
Dim myAsmFileName As String = "MyAsm.dll"
Dim myDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyDynamicAssembly"
Dim myAsmBuilder As AssemblyBuilder = 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
End Function 'BuildDynAssembly
Public Shared Sub Main()
Dim myResourceFS As FileStream = Nothing
CreateResourceFile()
Console.WriteLine("The contents of MyResource.txt, via GetFile:")
Dim myAsm As AssemblyBuilder = BuildDynAssembly()
Try
myResourceFS = myAsm.GetFile(myResourceFileName)
Catch nsException As NotSupportedException
Console.WriteLine("---")
Console.WriteLine("System.Reflection.Emit.AssemblyBuilder.GetFile is 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)
End Try
Dim sr As New StreamReader(myResourceFS, System.Text.Encoding.ASCII)
Console.WriteLine(sr.ReadToEnd())
sr.Close()
End Sub
End Class
Poznámky
fileName by nemělo být stejné jako u jakéhokoli jiného trvalého modulu, samostatného spravovaného prostředku nebo samostatného souboru manifestu.
Spravované prostředky v souboru se považují za veřejné.
Zadaný soubor prostředků musí být v adresáři, do kterého bude sestavení uloženo.
Poznámka
Počínaje .NET Framework 2.0 Service Pack 1 už tento člen nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit . (Viz Problémy se zabezpečením v emitu reflexe.) Pokud chcete tuto funkci používat, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.
Platí pro
AddResourceFile(String, String, ResourceAttributes)
Přidá existující soubor prostředků do tohoto sestavení.
public:
void AddResourceFile(System::String ^ name, System::String ^ fileName, System::Reflection::ResourceAttributes attribute);
public void AddResourceFile(string name, string fileName, System.Reflection.ResourceAttributes attribute);
member this.AddResourceFile : string * string * System.Reflection.ResourceAttributes -> unit
Public Sub AddResourceFile (name As String, fileName As String, attribute As ResourceAttributes)
Parametry
- name
- String
Logický název prostředku.
- fileName
- String
Název fyzického souboru (soubor .resources), na který je namapován logický název. To by nemělo zahrnovat cestu; soubor musí být ve stejném adresáři jako sestavení, do kterého je přidán.
- attribute
- ResourceAttributes
Atributy prostředku.
Výjimky
name byla definována dříve.
-nebo-
V sestavení je další soubor s názvem fileName.
-nebo-
Délka je name nula nebo pokud je délka fileName nula.
-nebo-
fileName obsahuje cestu.
name nebo fileName je null.
Pokud soubor fileName nebyl nalezen.
Volající nemá požadované oprávnění.
Příklady
Následující ukázka kódu ukazuje, jak připojit soubor prostředku k dynamicky vytvořenému sestavení pomocí 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();
}
}
Imports System.IO
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
_
Class AsmBuilderGetFileDemo
Private Shared myResourceFileName As String = "MyResource.txt"
Private Shared Function CreateResourceFile() As FileInfo
Dim f As New FileInfo(myResourceFileName)
Dim sw As StreamWriter = f.CreateText()
sw.WriteLine("Hello, world!")
sw.Close()
Return f
End Function 'CreateResourceFile
Private Shared Function BuildDynAssembly() As AssemblyBuilder
Dim myAsmFileName As String = "MyAsm.dll"
Dim myDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyDynamicAssembly"
Dim myAsmBuilder As AssemblyBuilder = 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
End Function 'BuildDynAssembly
Public Shared Sub Main()
Dim myResourceFS As FileStream = Nothing
CreateResourceFile()
Console.WriteLine("The contents of MyResource.txt, via GetFile:")
Dim myAsm As AssemblyBuilder = BuildDynAssembly()
Try
myResourceFS = myAsm.GetFile(myResourceFileName)
Catch nsException As NotSupportedException
Console.WriteLine("---")
Console.WriteLine("System.Reflection.Emit.AssemblyBuilder.GetFile is 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)
End Try
Dim sr As New StreamReader(myResourceFS, System.Text.Encoding.ASCII)
Console.WriteLine(sr.ReadToEnd())
sr.Close()
End Sub
End Class
Poznámky
fileName by nemělo být stejné jako u jakéhokoli jiného trvalého modulu, samostatného spravovaného prostředku nebo samostatného souboru manifestu.
Pro spravovaný prostředek je možné zadat atributy.
Zadaný soubor prostředků musí být v adresáři, do kterého bude sestavení uloženo.
Poznámka
Počínaje .NET Framework 2.0 Service Pack 1 už tento člen nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit . (Viz Problémy se zabezpečením v emitu reflexe.) Pokud chcete tuto funkci používat, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.