IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

minfeste ressource & reflection


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut minfeste ressource & reflection
    salut à tous,
    Je suis entrain de developper une application winfors avec visual studio 205
    J'ai diviser mon'application en trois sous projet
    Un projet pour la couche metier
    un projet pour la représentation
    un projet pour des classes utile et réutilisable pour d'autre projet (commun)

    Dans le troiesiéme projet j'ai crée une classe "MessageUtilisateur" pour la gestion des message que mes applications les affiches
    dans cette classe j'ai crée une fonction static la suivate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    private static Hashtable TousLesMessages = new Hashtable();
            public static string getMessage(string cleMessage,string culture)
            {
                string messageRetour = string.Empty;
                Assembly unAssembly = Assembly.GetCallingAssembly();
                string nomAssembly = unAssembly.GetName().Name;
                DsMessageUtilisateur lesMessages = null;
                if (TousLesMessages.Contains(nomAssembly))
                {
                    lesMessages = (DsMessageUtilisateur )TousLesMessages[nomAssembly];
                }
                else
                {
                    Stream unStream = unAssembly.GetManifestResourceStream(nomAssembly + ".Messages.xml");
                    if (unStream != null)
                    { 
                        lesMessages.ReadXml(unStream);
                        unStream.Close();
                        //dsMessage.ReadXml("messages.xml");
                        TousLesMessages.Add(nomAssembly,lesMessages);
                    }
                    else
                    {
                        throw new Exception("Le fichier XMl de messages Messages.Xml n'existe pas dans:"+nomAssembly);
                    }
                }
                //DsMessageUtilisateur dsMessage = (DsMessageUtilisateur)TousLesMessages[
                DataRow[] lesRow = lesMessages.Tables[0].Select("Code = '" + cleMessage + "'");
                if (lesRow.Length > 0)
                {
                    messageRetour = lesRow[0][culture].ToString();
                }
                return messageRetour;
     
            }
    Le probléme est que je n'arrive pas lire le ficher de message "Messages.Xml" dans le projet que utilise cette classe sachant que j'ai ajouté ce fichier aux ressources de mon projet (la couche mtier) et la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Stream unStream = unAssembly.GetManifestResourceStream(nomAssembly + ".Messages.xml");
    retourne un stream null

    Je sais pas quoi faire
    Il y' a quelqu'un peu m'aider

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Par défaut
    Salut,

    Pour accéder à un fichier ressource sans le référencer dans un .resx et sans utiliser le RessourceManager, tu doit changer les propriétés de se fichier :

    Il faut mettre Build Action à Embedded Resource. (Clic-droit Propriétés)

    Comme ça tu pourras y accéder comme tu voulais le faire.

    Voici la string qu'il faut donner à GetManifestResourceStream (:

    Le Default NameSpace du projet qui contient le fichier que l'on peux trouver en faisant clic-droit Propriétés sur le projet. (Ex :
    ProjectNameSpace.SousNameSpace)
    (Bien souvent le Default Namespace est identique au nom de l'assembly, mais il est bon de savoir que c'est grâce au namespace que les ressources sont localisée)
    Ensuite l'arborescence des répertoires contenant le fichier (si le fichier est dans le dossier Ressources)
    Et pour finir le nom du fichier (Ex: MyFile.xml)

    Ce qui nous donnerais : ProjectNameSpace.SousNameSpace.Ressources.MyFile.xml

    Voila! Cya

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    merci
    le problème est resolu grace à ton idée
    merci une autre fois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2016, 18h20
  2. Fichier ressource contenant une icône
    Par k_boy dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 26/09/2002, 20h59
  3. Utilisation de ressources images
    Par bebeours dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/09/2002, 14h33
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo