10
votes

Ressources au projet de bibliothèque de classe

Je souhaite ajouter du fichier XML en tant que ressource à mon projet de la bibliothèque de classe. Une idée de la façon de le faire et de l'appeler plus tard? Dans l'application Windows, je le ferais comme classlibrary1.properties.resources.file.xml

Mais ici, il n'a pas fait aucune idée de la façon dont je le fais ici?


1 commentaires

Qu'avez-vous fait cela n'a pas fonctionné? Qu'avez-vous essayé?


3 Réponses :


11
votes

Cet article Expliquez comment utiliser des ressources intégrées en C #.

Cela se résume à

  1. au «temps de conception»: ajoutez un fichier au projet et marquez-le comme ressource intégrée (propriétés)
  2. au «temps d'exécution»: obtenez une instance d'assemblage qui détient la ressource que vous souhaitez, puis obtenez cette ressource en tant que flux.

    Var assemblage = assemblage.getexecutingassemblage ();

    var stream = assemblage.getmanifestresourceestream ("pleinement.qualified.name.fle.the.lesource");

    Si vous avez du mal à résoudre le nom FQ de la ressource, une manière paresseuse est d'utiliser le réflecteur pour ouvrir l'assemblage qui le détient. Accédez au dossier Ressources, cliquez avec le bouton droit de la souris sur la ressource particulière et choisissez «Copier».


1 commentaires

Merci. Cela m'a aidé. Une autre façon d'obtenir les noms sans télécharger un outil consiste à accéder à _assembly.getmainfestrestresourcensames () et à coller un point d'arrêt là-bas. Vous obtiendrez tous les noms puis vous pouvez le copier / la coller et vous débarrasser de votre appel pour obtenir les noms. :)



11
votes

dans l'application Windows, je le ferais comme ClassLibrary1.Properties.resources.file.xml

Par défaut, la classe générée pour accéder aux ressources est interne, vous ne pouvez donc pas y accéder à un autre assemblage. Si vous devez le rendre public, sélectionnez le fichier .resx, accédez à ses propriétés et modifiez la propriété Tool personnalisée de "RESXFILECODEGENERATOR" sur "PUBLICESXFILECODEGENERATOR". Cet outil personnalisé génère des classes publiques, ce qui devrait résoudre votre problème.


0 commentaires

4
votes

Cliquez avec le bouton droit de la souris sur le projet de bibliothèque de classe, sélectionnez Propriétés, sur les onglets de gauche Choisissez la section des ressources.

Étant donné que vos fichiers .resx n'y sont pas reconnaissables par Visual Studio, ajoutez-en un nouveau. Il créera un nouveau fichier .resx.

Copiez tout votre contenu original et coller en Nouveau. Ensuite, vous pouvez supprimer l'ancien. C'est ça!

Vous auriez besoin de répéter le même processus pour toutes les langues prises en charge.


0 commentaires