Quel est le nom de la ressource pour une ressource manifeste (Assembly.GetManifestResourceStream)?

J’ai incorporé une ressource (un fichier XSD) dans mon application ASP.NET MVC. Maintenant, j’aimerais récupérer ce fichier à partir du code.

Dans la documentation de Assembly.GetManifestResourceStream() , il faut un argument de chaîne qui correspond au “nom de la ressource du manifeste demandé sensible à la casse”.

Eh bien, je ne trouve pas cela très utile et, bien sûr, il n’y avait aucun exemple à trouver sur MSDN. Quel est le nom de la ressource manifeste? Est-ce le nom du fichier? Est-ce le chemin complet et le nom du fichier? Ou bien est-ce un nom distinct qui est donné à la ressource elle-même et, le cas échéant, comment définir ce nom?

Si je me souviens bien, c’est le nom de l’assemblage plus le nom complet du fichier (extension incluse), avec un point entre eux.

Un moyen rapide de le savoir: utilisez la méthode Assembly.GetManifestResourceNames :

 ssortingng[] result = myAssembly.GetManifestResourceNames(); 

… et inspectez le contenu du result dans le débogueur.

ETA: Heck, si vous n’avez qu’une seule ressource, vous pouvez simplement utiliser ce code pour obtenir le nom:

 ssortingng name = myAssembly.GetManifestResourceNames()[0]; 

Cependant, je ne le recommande pas: j’ai constaté que, parfois, VS créerait des fichiers de ressources vides et les comstackrait dans l’assemblage, de sorte que vous pourriez avoir plus de ressources d’assemblage que vous ne le pensez.

ETA 2018-06-26: Voici une autre façon dont je suis étonné de ne pas avoir pensé à 2013. Cela vous donnera le nom de la ressource en fonction du nom de la ressource d’origine:

 ssortingng resourceFileName = "myResource.xsd"; ssortingng resourceName = myAssembly.GetManifestResourceNames() .Where(name => name.Contains(resourceFileName)) .FirstOrDefault();