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 :

Localiser un service Windows - faisable?


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut Localiser un service Windows - faisable?
    Bonjour à tous,

    J'ai créé un service windows qui effectue de la copie de fichiers et qui presente un log des différents evenements (demarrage service, arret, copie ect...).

    Je copie dans le log file avec ceci:

    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
     
    public static void WriteErrorLog(string Message)
            {
                StreamWriter sw = null;
                try
                {
                    sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "\\Logfile.txt", true);
                    sw.Write(DateTime.Now.ToString() + "  >  " + Message + "\r\n");
                    sw.Flush();
                    sw.Close();
                }
                catch
                {
                }
     
            }
    Ca fonctionne nickel.

    J'ai donc cherché à localiser ce log en fonction de la culture du PC sur lequel le service est installé. j'utilise cette fonction pour determiner la culture:

    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
     
    private void VerifLanguage()
            {
                culture = CultureInfo.CurrentCulture;
                Library.WriteErrorLog(culture.ToString());
     
                Assembly a = Assembly.Load("MoveFiles");
                rm = new ResourceManager("MoveFiles.Resources.Resource", a);
     
     
                if (culture.Name != "fr-FR")
                 {
                    System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("fr-FR");
                    ci = System.Threading.Thread.CurrentThread.CurrentUICulture;       
                }
                else
                {
                    System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("en-US");
                    ci = System.Threading.Thread.CurrentThread.CurrentUICulture;
     
                }
     
            }
    et pour ecrire mon log, un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Library.WriteErrorLog(rm.GetString("StartServiceInfo", ci));
    J'ai bien sur deux fichiers de ressources:
    Resource.resx
    Resource.en-US.resx

    Le problème est que quelque soit la culture du PC, c'est toujours le fichier Resource.resx (Français) qui est utilisé....

    Qu'est-ce que je fais de mal?

    merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    Plus de 70 lectures mais pas une seule réponse.... Pouvez-vous juste me dire si la piste que j'utilise est correcte et si la localization est utilisable sur un service windows?

    merci

  3. #3
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Un début de piste ici :

    https://stackoverflow.com/questions/...indows-service

    ++

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    Salut Wallace,

    Merci pour le lien, je ne l'avais pas trouvé celui là.

    edit:

    Je ne comprend pas trop ce paragraphe (je suis plutôt novice en C#):

    "A dear colleague helped. I strongly named the satellite assembly and registered it in the GAC. That was the solution. Now the Windows Service can access it. Detailed steps: In the setup project's file system editor: Add special folder -> Global assembly cache folder. Add file -> I added the resource file here Then under Project Properties -> Signing mark "Sign the Assembly" and create a new key file."

    je ne comprend pas la procédure à faire... GAC? "strongly named"?

    Merci pour vos lumières

  5. #5
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Programmer ne se réduit pas à connaitre le langage.......
    Les langages dotnet ont des spécificitées et il est recommandé d'en connaitre les perceptes : IL, CLR, Assembly, PE, CodeDom, ...etc......

    Le GAC en fait partie :
    https://docs.microsoft.com/fr-fr/dot...pp-domains/gac

    La signature d'assembly avec nom fort également :
    https://docs.microsoft.com/fr-fr/dot...-a-strong-name

    Bonne lecture....

    a+

Discussions similaires

  1. [Linq to Xml] Besoin d'aide pour une requête
    Par lutecefalco dans le forum Linq
    Réponses: 6
    Dernier message: 07/07/2008, 11h54
  2. Réponses: 1
    Dernier message: 09/10/2007, 19h31
  3. Besoin d'aide avec XML
    Par S_H_I dans le forum Framework .NET
    Réponses: 2
    Dernier message: 10/10/2006, 15h40
  4. Besoin d'aide pour langage XML
    Par begood13010 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 26/02/2006, 20h24
  5. Besoin d'aide lié à un fichier xml et un tableau a charger..
    Par jjs dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/07/2005, 14h03

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