AssemblyBuilder.AddResourceFile Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Aggiunge un file di risorse esistenti a questo assembly.
Overload
AddResourceFile(String, String) |
Aggiunge un file di risorse esistenti a questo assembly. |
AddResourceFile(String, String, ResourceAttributes) |
Aggiunge un file di risorse esistenti a questo assembly. |
AddResourceFile(String, String)
Aggiunge un file di risorse esistenti a questo assembly.
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)
Parametri
- name
- String
Nome logico della risorsa.
- fileName
- 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.
Eccezioni
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.
name
o fileName
è null
.
Il file fileName
non è stato trovato.
Il chiamante non dispone dell'autorizzazione richiesta.
Esempio
Nell'esempio di codice seguente viene illustrato come collegare un file di risorsa a un assembly creato in modo dinamico usando AddResourceFile
.
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
Commenti
fileName
non deve essere uguale a quello di qualsiasi altro modulo persistente, risorsa gestita autonoma o il file manifesto autonomo.
Si presuppone che le risorse gestite nel file siano pubbliche.
Il file di risorse specificato deve trovarsi nella directory in cui verrà salvato l'assembly.
Nota
A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede ReflectionPermission più con il ReflectionPermissionFlag.ReflectionEmit flag. Vedere Problemi di sicurezza in Reflection Emit. Per usare questa funzionalità, l'applicazione deve essere destinato a .NET Framework 3.5 o versione successiva.
Si applica a
AddResourceFile(String, String, ResourceAttributes)
Aggiunge un file di risorse esistenti a questo assembly.
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)
Parametri
- name
- String
Nome logico della risorsa.
- fileName
- 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.
- attribute
- ResourceAttributes
Attributi della risorsa.
Eccezioni
L'oggetto name
è stato definito in precedenza.
-oppure-
C'è un altro file nell'assembly denominato fileName
.
-oppure-
La lunghezza di name
o di fileName
è zero.
-oppure-
fileName
include un percorso.
name
o fileName
è null
.
Se il file fileName
non è stato trovato.
Il chiamante non dispone dell'autorizzazione richiesta.
Esempio
Nell'esempio di codice seguente viene illustrato come collegare un file di risorsa a un assembly creato in modo dinamico usando AddResourceFile
.
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
Commenti
fileName
non deve essere uguale a quello di qualsiasi altro modulo persistente, risorsa gestita autonoma o il file manifesto autonomo.
È possibile specificare gli attributi per la risorsa gestita.
Il file di risorse specificato deve trovarsi nella directory in cui verrà salvato l'assembly.
Nota
A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede ReflectionPermission più con il ReflectionPermissionFlag.ReflectionEmit flag. Vedere Problemi di sicurezza in Reflection Emit. Per usare questa funzionalità, l'applicazione deve essere destinato a .NET Framework 3.5 o versione successiva.
Si applica a
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per