<p>Vous pouvez utiliser la <a href="https://learn.microsoft.com/en-us/dotnet/api/system.reflection.assembly.getmanifestresourcestream#System_Reflection_Assembly_GetManifestResourceStream_System_String_"><strong>méthode <code>Assembly.GetManifestResourceStream</code></strong></a> :</p>
<ul>
<li></li>
</ul>
<p>Ajoutez les usings suivants</p>
<pre><code class="lang-auto"> using System.IO;
using System.Reflection;
</code></pre>
<ul>
<li></li>
</ul>
<p>Définissez la propriété du fichier concerné :</p>
<p>Paramètre <code>Build Action</code> avec la valeur <code>Embedded Resource</code></p>
<ul>
<li></li>
</ul>
<p>Utilisez le code suivant</p>
<pre><code class="lang-auto"> 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();
}
</code></pre>
<p><code>resourceName</code> est le nom de l’une des ressources incorporées dans <code>assembly</code>.<br>
Par exemple, si vous incorporez un fichier texte nommé <code>"MyFile.txt"</code> placé à la racine d’un projet avec l’espace de noms par défaut <code>"MyCompany.MyProduct"</code>, alors <code>resourceName</code> est <code>"MyCompany.MyProduct.MyFile.txt"</code>.<br>
Vous pouvez obtenir la liste de toutes les ressources d’un assembly en utilisant la <a href="https://learn.microsoft.com/en-us/dotnet/api/system.reflection.assembly.getmanifestresourcenames"><strong>méthode <code>Assembly.GetManifestResourceNames</code></strong></a>.</p>
<p>Une astuce évidente pour obtenir le <code>resourceName</code> à partir du nom de fichier uniquement (en contournant la logique d’espace de noms) :</p>
<pre><code class="lang-auto">string resourceName = assembly.GetManifestResourceNames()
.Single(str => str.EndsWith("YourFileName.txt"));
</code></pre>
<p>Un exemple complet :</p>
<p>`public string ReadResource(string name)<br>
{<br>
// Determine path<br>
var assembly = Assembly.GetExecutingAssembly();<br>
string resourcePath = name;<br>
// Format: “{Namespace}.{Folder}.{filename}.{Extension}”<br>
if (!name.StartsWith(nameof(SignificantDrawerCompiler)))<br>
{<br>
resourcePath = assembly.GetManifestResourceNames()<br>
.Single(str => str.EndsWith(name));<br>
}</p>
<pre><code>using (Stream stream = assembly.GetManifestResourceStream(resourcePath))
using (StreamReader reader = new StreamReader(stream))
{
</code></pre>
<p><em>(Réponse tronquée)</em></p>