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

C# Discussion :

Problème chargement ressources (après migration 4.0)


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Par défaut Problème chargement ressources (après migration 4.0)
    Bonjour,

    Je rencontre un soucis dans mon application avec le chargement des ressources.
    Celui-ci fonctionnait parfaitement avant que je ne passe en 4.0 (j'ai une appli winform, dans laquelle j'ai mis un peu de WPF donc j'avais besoin du 4.0 pour le datagrid)(j'ai aussi entre temps changé tous mes dossiers de plce sur le DD mais ça n'a guère d'importance je pense).

    La variable RM est mon resourcemanager.
    Je dispose de deux fichiers BP.fr.rsx et BP.en.rsx en resource incorporées.
    BP étant le nom de mon projet.

    CurrentUICulture n'étant pas null ni neutral mais bien {fr-FR}.

    J'utilisais ce code pour le charger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    System.Threading.Thread.CurrentThread.CurrentUICulture = BPM2012.Properties.Settings.Default.paramCurrentUICulture;
                    Assembly ay = System.Reflection.Assembly.GetExecutingAssembly();
     
                    RM = new System.Resources.ResourceManager("BP.BP", System.Reflection.Assembly.GetExecutingAssembly());
    L'assembly renvoyé par GetExecutingAssembly a une culture neutre.

    Et donc dés que je veux me servir de RM j'obtiens :
    {"Impossible de trouver des ressources appropriées pour la culture spécifiée ou la culture neutre. Assurez-vous que \"BP.BP.resources\" a été correctement incorporé ou lié dans l'assembly \"BP\" au moment de la compilation ou que tous les asces.MissingManifestResourceException: semblys satellites requis sont chargeables et complètement signés.
    à System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName)
    à System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
    à System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
    à System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
    à System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
    à System.Resources.ResourceManager.GetString(String name)
    }
    Voilà, je suis un peu dans une impasse si vous pouviez m'aider...

    Merci d'avance,

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par PigKey6 Voir le message
    Je dispose de deux fichiers BP.fr.rsx et BP.en.rsx en resource incorporées.
    Et pas de BP.resx ? Normalement on crée toujours un fichier pour la culture neutre, qui est utilisé quand il n'y a pas de ressources pour la culture demandée.

    D'autre part :
    - à quel endroit appelles-tu GetExecutingAssembly ? est-ce que c'est dans le même projet, ou dans un autre projet de la solution ?
    - pourquoi tu n'utilises pas la classe générée automatiquement par Visual Studio pour le fichier de ressources ?

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Par défaut
    Bonjour,

    Merci pour la réponse.


    Il y a en effet quelque chose nommé ressources.rsx dans le dossier propriétés de mon projet. Si je l'ouvre je peux voir 3 images que j'avais mis en resources. Rien de plus. Tout cela fonctionnait avant.


    Si je crée un BP.rsx je met quoi dedans ? En fait au chargement de mon application je récupère la culture, et si la culture est neutre je met français par défaut et seulement ensuite je charge ma variable RM avec le getexecutingassembly (utilisé dans le chargement de ma Form).

    Quelle est cette classe générée automatiquement par VS pour le fichier resources ? Celle qui se crée avec le mode "Design" ?
    Je l'utilisais avant mais j'avais eu un soucis et ça ne fonctionnait plus du coup j'avais changé ma méthode et fait comme ça. Et ça fonctionnait très bien jusqu'à maintenant.

    Merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par PigKey6 Voir le message
    Si je crée un BP.rsx je met quoi dedans ?
    Les textes pour la culture neutre

    Citation Envoyé par PigKey6 Voir le message
    Quelle est cette classe générée automatiquement par VS pour le fichier resources ?
    La même qui est générée pour le Resources.resx, si tu as pas touché aux options par défaut. Il suffit de mettre "ResXFileCodeGenerator" comme custom tool dans les propriétés du fichier, et il génère une classe statique du même nom que le fichier resx, avec une propriété pour chaque texte défini dans le fichier resx

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2011
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 66
    Par défaut
    Cette classe est bien générée pour mes deux fichiers ressources (j'ai essayé d'enlever ResXFileCodeGenerator et de le remettre)

    J'obtiens un fichier BP.fr.designer.rsx (si je l'ouvre j'obtiens un fichier avec une seule ligne avec un carré (caractère spécial) sur la première ligne alors que j'obtiens bien un fichier avec du code pour BP.properties.resources)


    J'ai l'impression que le problème vient que getexecutingassembly me renvoit toujours la culture neutre et donc il cherche BP.resource et non BP.fr.resource (en fait le fichier BP.resource n'est pas dans le meme dossier).

    Pourtant j'ai bien spécifié que la culture courante du thread était fr-FR.


    En fait mes deux fichiers resources sont à la racine du projet et le fichier resource est dans properties. Donc j'imagine que pour les resources il faudrait mettre BP.Properties, sauf qu'ici je cherche à atteindre mes ressources perso donc je met BP.BP (le deuxième étant le nom du fichier).

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par PigKey6 Voir le message
    J'obtiens un fichier BP.fr.designer.rsx (si je l'ouvre j'obtiens un fichier avec une seule ligne avec un carré (caractère spécial) sur la première ligne alors que j'obtiens bien un fichier avec du code pour BP.properties.resources)
    ResXFileCodeGenerator s'utilise seulement sur le fichier de ressources pour la culture neutre (celui que tu n'as pas créé), pas sur les ressources localisées

    Et l'extension de tes fichiers est vraiment "rsx" ou en fait c'est "resx" ? Parce que je suis pas sûr que Visual Studio sache se débrouiller avec des fichiers "rsx"...

    Citation Envoyé par PigKey6 Voir le message
    J'ai l'impression que le problème vient que getexecutingassembly me renvoit toujours la culture neutre
    Ça n'a rien à voir ; GetExecutingAssembly renvoie un assembly, pas une culture. C'est le ResourceManager qui décide ensuite quelle culture utiliser

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

Discussions similaires

  1. Problème connexion internet après migration vers 14.04
    Par thecrazydonut dans le forum Linux
    Réponses: 10
    Dernier message: 01/10/2014, 23h54
  2. Réponses: 1
    Dernier message: 19/09/2010, 15h01
  3. Problème apres migration SQL SERVER
    Par Elijah37 dans le forum Modélisation
    Réponses: 1
    Dernier message: 04/06/2008, 15h56
  4. [cvs2svn] Problème checkout après migration
    Par jerzy59 dans le forum Subversion
    Réponses: 5
    Dernier message: 07/01/2008, 10h33

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