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 :

CodeDomProvider et fichiers .obj


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut CodeDomProvider et fichiers .obj
    Bonjour à tous,

    j'ai besoin de créer un programme qui compile les fichiers C# contenus dans un répertoire, puis qui renvoie l'assembly généré (et qui créé une Dll). J'ai utilisé cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<string> files = new List<string>( Directory.EnumerateFiles( "script", "*.cs" ) );
    CodeDomProvider provider = CodeDomProvider.CreateProvider( "CSharp" );
    CompilerParameters params_ = new CompilerParameters( References );
    params_.GenerateExecutable = false;
    params_.GenerateInMemory = false;
    params_.OutputAssembly = @"script.dll";
    params_.IncludeDebugInformation = true;
    CompilerResults results = provider.CompileAssemblyFromFile( params_, files.ToArray() );
    return results.CompiledAssembly;
    Ce code marche bien, mais le problème c'est qu'à chaque exécution du programme, l'ensemble des fichiers est compilé depuis zéro ! Cela peut prendre un bout de temps si le dossier "script" contient de nombreux fichiers C#. Ce que je voudrais faire, c'est ne recompiler que les fichiers dont on a besoin, c'est-à-dire qui ont été modifiés depuis la dernière exécution du programme. J'avais pensé a sauvegarder les fichiers .obj générés, mais je n'ai pas trouvé comment faire, je ne sais même pas si c'est possible (et l'attribut KeepFiles du CompilerParameters ne donne rien d'intéressant)...

    Merci d'avance pour toute réponse !

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Bonjour

    Citation Envoyé par dancingmad Voir le message
    Ce que je voudrais faire, c'est ne recompiler que les fichiers dont on a besoin, c'est-à-dire qui ont été modifiés depuis la dernière exécution du programme.
    Pour autant que je le sache ce n'est pas possible.
    Contrairement aux assemblages purement binaires (comme en C++ non managé), il n'y pas de distinguo en .NET entre les phases de compilation et d'édition de liens.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Pour autant que je le sache ce n'est pas possible.
    Ah zut, mais dans ce cas, comment Visual est capable de ne compiler que les fichiers nécessaires avant le lancer le programme, quel est le mécanisme employé ?

    Sinon, j'ai peut-être trouvé une autre piste avec la classe Microsoft.Build.Evaluation.Project, qui permet de créer à la volée un projet C# et de le compiler (et cela créé bien un certain nombre de fichiers temporaires). Je n'ai pas encore eu le temps de tester ça, je ferais des tests ce week-end.

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    Microsoft.Build.Evaluation est un peu un "wrapper" de MSBuild

    Après, il faut être en 4.0 pour l'utiliser... mais tu peux générer du 2.0 bien sur.

    J'ai l'impression que Build est plus pour créer des projets que juste pour simplement compiler comme CodeDom ne le fait....

    Et je serais étonné que CodeDom ne soit pas devenue obsolète si Build se
    positionne en remplaçant (avec plus de fonctionnalités évidemment)
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #5
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut
    Au final, la classe Project fait en effet à peu près le même boulot que CodeComProvider, à part qu'il ne recompile pas le projet si aucune source n'a été modifée... C'est pas terrible mais c'est déjà ça. Merci pour vos réponses !

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

Discussions similaires

  1. fichier obj manquant
    Par Pendary dans le forum C++Builder
    Réponses: 1
    Dernier message: 26/01/2007, 09h55
  2. [Irrlicht] recherche code (lire/afficher) fichier OBJ
    Par Husqvarna dans le forum Irrlicht
    Réponses: 3
    Dernier message: 14/03/2006, 11h19
  3. fichier *.obj???
    Par neril dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/04/2005, 10h07
  4. Réponses: 8
    Dernier message: 18/05/2004, 10h03
  5. Est-ce que les fichiers .obj sont tous les mêmes?
    Par Bubonik software dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 30/12/2003, 21h04

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