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

Framework .NET Discussion :

c# CodeDom Erreur de compilation


Sujet :

Framework .NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 5
    Points
    5
    Par défaut c# CodeDom Erreur de compilation
    Bonsoir,

    Mon programme génère un exécutable automatiquement.

    Le problème apparaît lors de cette génération.

    Je stocke des bytes dans une variable dans le code a compilé, cette ligne cause le problème.

    L'erreur est la suivante : Saut de ligne dans la constante Ligne: 23

    Voici le code :

    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
     
    StringBuilder SB = new StringBuilder();
                SB.Append(Properties.Resources.PART1);
                String DataString = System.Text.Encoding.Default.GetString(data);
                SB.Append("String FinalString =\"" + DataString + "\";");
                SB.Append(Properties.Resources.PART2);
                System.Diagnostics.Debug.Print(SB.ToString());
     
                results = provider.CompileAssemblyFromSource(settings,SB.ToString());
     
     
                if (results.Errors.Count != 0)
                {
                    System.Diagnostics.Debug.Print(results.Errors[0].ErrorText+" Line: "+results.Errors[0].Line);
                }
    Il ne veux pas compiler car il y a des sauts de ligne dans DataString, j'ais essayé des Replace dans tous les sens mais rien à faire. Je suis bloqué sur le problème depuis plusieurs heures.

    Si quelqu'un a une solution, elle est la bienvenue.

    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu pourrais utiliser le préfixe "@" pour indiquer une chaine verbatim :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SB.Append("String FinalString = @\"" + DataString + "\";");
    Cela dit, si la chaine contient des guillemets, tu auras le même problème...

    Une façon plus propre serait d'utiliser CodePrimitiveExpression :

    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
    ...
     
    SB.Append("String FinalString =\"" + FormatCodePrimitive(provider, DataString) + "\";");
     
    ...
     
    string FormatCodePrimitive(CodeDomProvider provider, object value)
    {
        var expression = new CodePrimitiveExpression(value);
        using (var writer = new StringWriter())
        {
            provider.GenerateCodeFromExpression(expr, writer, null);
            return writer.ToString();
        }
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Super !

    Merci beacoup. Je m'en vais faire ça de suite

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Nouvelle erreur !
    Hmmm ....

    Cela fonctionne pour ce qui est des retours a la ligne, en revanche, j'ais une nouvelle erreur. Il me trouve des caractères inattendus.

    Caractère '–' inattendu Line: 22

    Y'a t'il un moyen de remédier à cela ?

    Merci d'avance !

  5. #5
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Bah sans avoir le contexte c'est difficile de trouver le problème... je ne sais pas ce que c'est la ligne 22

    Poste le code généré (SB.ToString())

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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