Comment lire un fichier texte en ressource incorporée
Vous pouvez utiliser la méthode Assembly.GetManifestResourceStream :
Ajoutez les usings suivants
using System.IO;
using System.Reflection;
Définissez la propriété du fichier concerné :
Paramètre Build Action avec la valeur Embedded Resource
Utilisez le code suivant
var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyCompany.MyProduct.MyFile.txt";
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader reader = new StreamReader(stream))
{
string result = reader.ReadToEnd();
}
resourceName est le nom de l’une des ressources incorporées dans assembly.
Par exemple, si vous incorporez un fichier texte nommé "MyFile.txt" placé à la racine d’un projet avec l’espace de noms par défaut "MyCompany.MyProduct", alors resourceName est "MyCompany.MyProduct.MyFile.txt".
Vous pouvez obtenir la liste de toutes les ressources d’un assembly en utilisant la méthode Assembly.GetManifestResourceNames.
Une astuce évidente pour obtenir le resourceName à partir du nom de fichier uniquement (en contournant la logique d’espace de noms) :
string resourceName = assembly.GetManifestResourceNames()
.Single(str => str.EndsWith("YourFileName.txt"));
Un exemple complet :
`public string ReadResource(string name)
{
// Determine path
var assembly = Assembly.GetExecutingAssembly();
string resourcePath = name;
// Format: “{Namespace}.{Folder}.{filename}.{Extension}”
if (!name.StartsWith(nameof(SignificantDrawerCompiler)))
{
resourcePath = assembly.GetManifestResourceNames()
.Single(str => str.EndsWith(name));
}
using (Stream stream = assembly.GetManifestResourceStream(resourcePath))
using (StreamReader reader = new StreamReader(stream))
{
(Réponse tronquée)