AssemblyBuilder.AddResourceFile Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Fügt dieser Assembly eine vorhandene Ressourcendatei hinzu.
Überlädt
AddResourceFile(String, String) |
Fügt dieser Assembly eine vorhandene Ressourcendatei hinzu. |
AddResourceFile(String, String, ResourceAttributes) |
Fügt dieser Assembly eine vorhandene Ressourcendatei hinzu. |
AddResourceFile(String, String)
Fügt dieser Assembly eine vorhandene Ressourcendatei hinzu.
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)
Parameter
- name
- String
Der logische Name der Ressource.
- fileName
- String
Der Name der physischen Datei (RESOURCES-Datei), der der logische Name zugeordnet ist. Der Name darf keinen Pfad enthalten. Die Datei muss sich im selben Verzeichnis wie die Assembly befinden, der sie hinzugefügt wird.
Ausnahmen
name
wurde bereits zuvor definiert.
- oder -
In der Assembly ist eine andere Datei mit dem Namen fileName
vorhanden.
- oder -
Die Länge von name
ist 0 (null).
- oder -
Die Länge von fileName
ist null, oder wenn fileName
einen Pfad enthält.
name
oder fileName
ist null
.
Die Datei fileName
wird nicht gefunden.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie eine Ressourcendatei mithilfe AddResourceFile
von an eine dynamisch erstellte Assembly angefügt wird.
using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class AsmBuilderGetFileDemo
{
public:
static String^ myResourceFileName = "MyResource.txt";
static FileInfo^ CreateResourceFile()
{
FileInfo^ f = gcnew FileInfo( myResourceFileName );
StreamWriter^ sw = f->CreateText();
sw->WriteLine( "Hello, world!" );
sw->Close();
return f;
}
static AssemblyBuilder^ BuildDynAssembly()
{
String^ myAsmFileName = "MyAsm.dll";
AppDomain^ myDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew 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;
}
};
int main()
{
FileStream^ myResourceFS = nullptr;
AsmBuilderGetFileDemo::CreateResourceFile();
Console::WriteLine( "The contents of MyResource.txt, via GetFile:" );
AssemblyBuilder^ myAsm = AsmBuilderGetFileDemo::BuildDynAssembly();
try
{
myResourceFS = myAsm->GetFile( AsmBuilderGetFileDemo::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 = gcnew FileStream( AsmBuilderGetFileDemo::myResourceFileName,FileMode::Open );
}
StreamReader^ sr = gcnew StreamReader( myResourceFS,System::Text::Encoding::ASCII );
Console::WriteLine( sr->ReadToEnd() );
sr->Close();
}
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
Hinweise
fileName
sollte nicht mit dem eines anderen persistenten Moduls, einer eigenständigen verwalteten Ressource oder einer eigenständigen Manifestdatei identisch sein.
Es wird davon ausgegangen, dass die verwalteten Ressourcen in der Datei öffentlich sind.
Die angegebene Ressourcendatei muss sich in dem Verzeichnis befinden, in dem die Assembly gespeichert wird.
Hinweis
Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflektionsausgabe.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für:
AddResourceFile(String, String, ResourceAttributes)
Fügt dieser Assembly eine vorhandene Ressourcendatei hinzu.
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)
Parameter
- name
- String
Der logische Name der Ressource.
- fileName
- String
Der Name der physischen Datei (RESOURCES-Datei), der der logische Name zugeordnet ist. Der Name darf keinen Pfad enthalten. Die Datei muss sich im selben Verzeichnis wie die Assembly befinden, der sie hinzugefügt wird.
- attribute
- ResourceAttributes
Die Ressourcenattribute.
Ausnahmen
name
wurde bereits zuvor definiert.
- oder -
In der Assembly ist eine andere Datei mit dem Namen fileName
vorhanden.
- oder -
Die Länge von name
ist 0 (null), oder die Länge von fileName
ist 0 (null).
- oder -
fileName
enthält einen Pfad.
name
oder fileName
ist null
.
Wenn die Datei fileName
nicht gefunden wird.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie eine Ressourcendatei mithilfe AddResourceFile
von an eine dynamisch erstellte Assembly angefügt wird.
using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class AsmBuilderGetFileDemo
{
public:
static String^ myResourceFileName = "MyResource.txt";
static FileInfo^ CreateResourceFile()
{
FileInfo^ f = gcnew FileInfo( myResourceFileName );
StreamWriter^ sw = f->CreateText();
sw->WriteLine( "Hello, world!" );
sw->Close();
return f;
}
static AssemblyBuilder^ BuildDynAssembly()
{
String^ myAsmFileName = "MyAsm.dll";
AppDomain^ myDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew 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;
}
};
int main()
{
FileStream^ myResourceFS = nullptr;
AsmBuilderGetFileDemo::CreateResourceFile();
Console::WriteLine( "The contents of MyResource.txt, via GetFile:" );
AssemblyBuilder^ myAsm = AsmBuilderGetFileDemo::BuildDynAssembly();
try
{
myResourceFS = myAsm->GetFile( AsmBuilderGetFileDemo::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 = gcnew FileStream( AsmBuilderGetFileDemo::myResourceFileName,FileMode::Open );
}
StreamReader^ sr = gcnew StreamReader( myResourceFS,System::Text::Encoding::ASCII );
Console::WriteLine( sr->ReadToEnd() );
sr->Close();
}
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
Hinweise
fileName
sollte nicht mit dem eines anderen persistenten Moduls, einer eigenständigen verwalteten Ressource oder einer eigenständigen Manifestdatei identisch sein.
Für die verwaltete Ressource können Attribute angegeben werden.
Die angegebene Ressourcendatei muss sich in dem Verzeichnis befinden, in dem die Assembly gespeichert wird.
Hinweis
Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflektionsausgabe.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher ausgerichtet sein.