none
Créer un projet à partir de code existant AVEC respect (structure projet VS) des repertoires entre OS et VS ? RRS feed

  • Question

  • Bonjour,

     

    voici mon problème :

    je dois analyser du code dont les sources sont nombreux (> 3000 fichiers) et répartis dans plusieurs répertoires.

    Note : je n'ai pour l'instant pas de droit d'écriture sur ces répertoires, mais je ne pense pas que ça explique le problème suivant.

     

    Pour faciliter l'analyse, je voudrais utiliser l'IDE VS (pour intellisense, ...), et donc j'ai essayé de créer un projet (à partir du code existant) via l'assistant de VS 2008 Express Edition en précisant un répertoire local (sur C: ) où j'ai le droit d'écriture pour l'emplacement du projet (.sln, .vcproj) et en précisant à l'assistant pour les fichiers à prendre en compte le répertoire père (disque réseau type Z: ) des répertoires contenant les sources (avec bien sur la case 'Regarder dans les sous-répertoires' cochée).

     

    Le projet est bien crée avec l'ensemble des fichiers MAIS tout est "à plat" dans la structure du projet VS ... Sad

    Les fichiers dans VS sont représentés sous forme de liens qui pointent bien au bon endroit, mais aucun folder n'est crée par l'assistant pour être confome à l'arborescence du File System. Tous les fichiers sont à la racine du projet VS, ce qui n'est pas très ergonomique.

     

    J'ai essayé de modifier le .vcproj pour ajouter les répertoires mais rien n'y fait.

     

    Y-a-t-il donc un moyen de créer un projet à partir d'une arborescence EN RESPECTANT cette arborescence dans la structure du projet VS (et cela même lorsqu'on n'a pas les droits d'écriture sur l'arborescence en question si ce cas est une contrainte) ?

     

    Merci beaucoup pour votre aide, je suppose que la solution existe (sans passer par la création manuelle de tous les répertoires/folders du projet initial dans le projet VS).

     

    Un utilisateur de VS ExEd (enfin peut-être ...).

     

    jeudi 23 octobre 2008 08:57

Toutes les réponses

  • Ne serait-il pas plus simple de faire une copie de l'arborescence vers votre machine?

     

    jeudi 23 octobre 2008 12:15
    Modérateur
  • Merci pour la réponse.

     

    Certes, c'est une des alternatives mais qui a l'inconvénient d'être peu pratique et qui  ne suivrait pas toute l'évolution de l'original (ajout/suppression de dossiers/fichiers, ...). Imaginons que l'on autorise un observateur (sans droit d'écriture) à lire ce code, il devra à chaque fois faire la "synchro" entre "dossier père original" et sa copie en local. Alors qu'un nouvel "import" suffirait pour être à jour.

     

    En fait, il apparait que VS affiche et gère les répertoires qui se trouvent réellement et uniquement au niveau du .vcproj (car aucune notion de folder dans le vcproj, mais plutot des filtres).

    Vs ne sait pas, à priori, gérer (dans le sens les montrer dans l'arborescence projet IDE) ceux qui découlent d'une création de projet à partir d'un code existant et lorsqu'on précise un ou des répertoires à prendre en compte autre(s) que l'emplacement du projet.

     

    Par exemple, en gérant des eléments xml 'Folder' dans le .vcproj, VS pourrait au moins représenter graphiquement dans le projet VS l'arborescence voulue, il pourrait créer un élément avec le nom ou un lien pour chaque répertoire trouvé au moment de la création, et en mettant dans cet élément 'Folder' les fichiers qu'il trouverait pendant l'analyse (les liens des fichiers pointant correctement sur l'emplacement physique).

     

    Dommage ... mais j'avoue, ce cas de figure est certainement rare !

     

    jeudi 23 octobre 2008 13:01
  • Si tu crée une nouvelle solution, et que tu ajoutes les projets existants(sur le réseau j'imagine), ceux-ci devrait être bien définis.

     

    Autre question, vous n'utiliser pas Team Foundation Server(TFS) ou autre gestionnaire pour gérer vos sources?

     

    jeudi 23 octobre 2008 14:10
    Modérateur
  • Bonjour,

     

    il n'y a pas de projet VS initial, je suis le premier à utiliser VS pour l'IDE (la génération du code étant gérer à part).

    Je peux demander un droit d'écriture provisoire afin de créer le projet sur le réseau, ou demander au détenteur des droits d'écriture de venir se loguer sur mon poste (ou d'installer VS sur le sien) et de créer le projet qui, dans ce cas effectivement, pourra être ajouté dans une solution se trouvant ailleurs, mais je ne peux pas imposer VS, chacun doit rester libre de son environnement de travail (au moins pour l'édition de sources) dans la mesure du possible.

     

    Je voulais juste savoir si VS savait créer des projets dans ce contexte (code existant avec arborescence localisé ailleurs que le projet), et la réponse est non, ce n'est pas très grave, même si la solution ne serait pas trop compliquée à impléménter pour VS (il fait des choses beaucoup plus dures !).

     

    Pour la gestion des sources, point de TFS, mais les projets sont versionnés sous ClearCase ... sauf celui-ci, qui est donc accessible en lecture seule pour l'instant, d'où mon premier post.

     

    Merci pour votre support.

     

    vendredi 24 octobre 2008 08:30
  • Qu'est- ce que vous utiliser pour créé toutes vos sources, si ce n'est pas avec VS? Et vous n'avez pas de projet, ni solution? Cela peut expliqué pourquoi il ne peut pas trouver l'arborescence, j'ai fait des tests hier soir, et tout fonctionnait, mais bien sur, j'avais définis des projets. 

    vendredi 24 octobre 2008 11:48
    Modérateur
  • Qu'est- ce que vous utiliser pour créé toutes vos sources, si ce n'est pas avec VS?

    ==> peu importe l'éditeur de départ, ce sont des fichiers sources, donc du texte, chacun utilise l'éditeur qui lui convient.

    Le problème n'est pas "comment les sources sont édités" mais "comment les intégrer dans un projet VS avec leur arborescence"

     

    Et vous n'avez pas de projet, ni solution?

    ==> Pour l'instant, je suis "lecteur du code", et l'équipe existante utilise un autre éditeur ou IDE et des makefile pour générer le code, Microsoft n'a pas le monopole de génération de code ;-)

    VS propose un assistant pour créer un projet VS à partir de code existant, donc sans projet ni solution en préalable (et heureusement!).

    Encore une fois, mon but est de créer un projet VS pour l'ergonomie de l'IDE et les fonctionnalités utiles comme intellisense, explorateur de classes, etc... indépendamment de ce que choisit le reste de l'équipe, qui pour des raisons diverses, ont le droit d'utiliser un autre IDE (tout le monde ne conduit pas la même voiture!).

     

    Cela peut expliqué pourquoi il ne peut pas trouver l'arborescence, j'ai fait des tests hier soir, et tout fonctionnait, mais bien sur, j'avais définis des projets.

    ==> que voulez vous dire par "définir des projets", je crois qu'il y a confusion entre "upgrade de projets" (d'une version VS à une autre, par exemple de VS2005 à VS2008, et dans ce cas le projet initial VS existe) et création de projet à partir de code existant mais sans projet VS (c'est ce cas qui m'intéresse).

    Le but de l'assistant est de créer un projet pour vous, donc pas besoin de le définir avant, et heureusement!

    Quand vous importez des bookmarks sous IE ou firefox, c'est justement pour vous éviter de les recréer manuellement.

     

    Du coup, qu'avez vous fait comme tests ?!

    Avez-vous utilisé l'assistant de création de projet à partir de code existant (menu Fichier->Nouveau->Projet à partir de code existant" ?

    Avez-vous spécifier un emplacement pour le projet ("Emplacement du fichier projet") différent de celui où sont les sources à prendre en compte ?

    Pour votre test, si vous avez crée votre projet à la racine de votre code, oui, là ça marche bien (car encore une fois, VS affiche dans l'IDE l'arborescence qui se trouve au même niveau que le .vcproj), MAIS ce n'est pas mon contexte. 

    Si possible, essayer de créer un projet avec un .vcproj ("Emplacement du fichier projet") à un endroit et des sources (avec arborescence) à un autre endroit.

    Exemple : 

    je précise à l'assistant ("Emplacement du fichier projet") un répertoire local où j'ai les droits d'écriture, par exemple "c:\travail\monprojet".

    L'arborescence père contenant les sources à prendre en compte se trouve sur z:\code\projetalpha, alors j'utilise 'Ajouter' dans l'assistant pour ajouter ce répertoire et je laisse bien sur la case 'Ajouter les sous-dossiers' cochée, et je décoche/supprime la ligne contenant le répertoire du projet (ici "c:\travail\monprojet"), qui dans ce cas ne contient pas de sources.

     

    Si vous réussissez à avoir l'arborescence dans votre projet VS avec ce test sans autre intervention manuelle, alors ça m'intéresse.

    Par exemple, si dans l'arborescence de z:\code\projetalpha, il y a les répertoires :

    cfg

    init

     

    alors je m'attends à voir dans l'IDE VS pour le projet crée les folders 'cfg' et 'init' avec à l'intérieur leurs fichiers respectifs.

     

    NOTE : j'utilise VS2008 Express Edition (peut-être que VS2005 gère correctement ce cas de figure).

     

    Cordialement.

    vendredi 24 octobre 2008 12:37
  • Bonjour,

     

    Il suffit juste de faire un glisser/déplacer du dossier racine z:\code\projetalpha depuis l'explorateur Windows vers votre projet Visual Studio.

     

    Cordialement

     

    vendredi 24 octobre 2008 14:02
    Modérateur
  • Bonjour,

     

    c'est vrai que je n'avais pas testé cette alternative ... mais malheureusement ça ne marche pas non plus.

    VS cree les 3 folders par défaut (sources, header, ressources) avec les fichiers correspondants à leur filtre respectif (les .cpp dans 'Sources', les .h dans 'Headers', etc ...) MAIS à part ça, tous les fichiers sont "à plat" dans l'IDE.

     

    Pour info, j'ai d'abord lancé une nouvelle instance de VS (vierge, donc sans solution ni projet), puis essayé un drag&drop de mon z:\code\projetalpha, mais là erreur (car VS ne peut certainement pas créer un projet sans connaitre au moins son type et son emplacement). J'ai donc ensuite crée un projet VS vide en local puis retenté le drag&drop, et là (après qq minutes car nombreux répertoires et fichiers, c'est d'ailleurs pour ça que je passe par l'assistant) tous les fichiers sont dans le projet VS mais sans l'arborescence originale ...

     

    Merci pour vos suggestions.

    Cordialement.

     

    vendredi 24 octobre 2008 14:35
  • Bonjour,

     

    Voilà qu'il est plus clair maintenant, vous utilisez Visual Studio et en particulier l'éditeur C++.

     

    Il vous faudra dans votre cas, recréer l'arborescence à la main dans Visual C++ et y ajouter les fichiers pour chaque dossier.

     

    Une autre solution :

    Le fichier projet ".vcproj" est une fichier .xml, il est tout à fait possible de le modifier via un programme/script pour y spécifier l'arborescence de vos sources.

     

    Cordialement

     

    dimanche 26 octobre 2008 09:58
    Modérateur
  • Bonjour,

     

    je suis conscient que mes posts sont longs, mais pourriez-vous, s'il-vous-plait, les lire dans leur intégralité ?

    Depuis mon premier post, je dis que j'utilise VS 2008 Express Edition. Après, le fait que ce soit du C, C++ ou autre language, change peut-être le comportement de l'assistant VS de création de projet (à partir de code existant), mais je ne suis pas à l'intérieur de VS pour le savoir ... c'est ce genre d'infos que j'attends de vous.

    Je suis aussi conscient que l'on parle d'une version gratuite de VS, et que l'assistance n'est pas forcément fournie ou complète, mais ma société utilise aussi des versions payantes de produits Microsoft, et de la qualité des réponses (forums, ...) dépendra le choix des produits futurs.

     

    Vous dites que le .vcproj peut être modifié, et croyez moi, j'ai donc tenté de le faire (voir ci-dessous), avant même que vous me le suggériez, mais l'info pertinente serait de dire l'élement xml à placer dans le .vcproj pour que VS affiche un folder dans l'IDE, si cette solution existe bien sûr.

     

    Ceci est donc certainement mon dernier post (et je ne cocherai pas la case 'oui' à la question 'Avez-vous trouvé cette publication utile ?'), car je n'ai toujours pas de réponses claires à ces questions :

    L'assistant de création de projet VS (2008 Express Edition dans mon cas) sait-il reflèter automatiquement l'arborescence d'un code dans le projet VS (IDE) crée à partir de ce code, en sachant que le code se trouve à un autre emplacement que le .vcproj ?

    Réponse attendue : oui ou non (c'est au moins la réponse dont j'ai besoin pour répondre à l'utilité de vos réponses, merci)

    Si non (VS ne sait pas faire), y-a-t-il un moyen (une astuce, un tip, un bricolage, une bidouille ...) de modifier le projet VS (.vcproj) pour que VS affiche cette arborescence du code dans le projet VS (IDE) ?

    Réponse attendue : oui ou non

    Et enfin, si ce moyen existe, quel est-il ?

    Réponse attendue : la méthode (si modification du .vcproj, détails de ces modifications, ....) pour y parvenir ?

     

    Et SVP, ne me parlez pas d'ajouter les fichiers à la main, bien évidement je sais que c'est un moyen, mais lorsque vous avez des dizaines de répertoires, c'est fastidieux, et je vous rappelle que mon fichier .vcproj ne SE TROUVE PAS au niveau du répertoire père contenant les sources, ceci pour des raisons de droit d'écriture.

     

    Pour la modification du .vcproj, comme dit précédemment dans un de mes posts, j'ai tenté de le modifier. Seulement, VS ne semble pas gèrer d'élément xml 'Folder' (merci, par exemple, de me confirmer ce doute) :

    lorsque j'ai fait un test en créant un projet à partir de code se trouvant au niveau du projet (.vcproj), VS affiche bien les répertoires dans l'IDE, mais aucun élément xml ne reflète ces répertoires, c'est à partir de ce test que j'en ai déduis (toujours dans un de mes posts) que VS scanne et affiche les répertoires qu'il trouve à partir de l'emplacement du .vcproj ... mais il semble que VS ne mette rien (élément 'Folder' par exemple) dans le .vcproj pour ces répertoires trouvés. Ce serait pour cette raison (pas d'élément xml dans le .vcproj et répertoires sources ailleurs que là où se trouve le .vcproj), que VS ne saurait pas afficher les répertoires dans l'IDE, oui ou non ?

     

    Enfin, avez vous essayé ou pourriez-vous essayer SVP le test que j'évoque dans mon post du 24/10/2008 12:37 UTC ?

    (à partir de Du coup, qu'avez vous fait comme tests ?! où sont détaillés les étapes du test)

     

    Ce post parait sévère, mais c'est pour éviter de tourner en rond et de répéter n fois la même chose.

    Je vous remercie donc de votre compréhension.

    Cordialement.

     

     

    lundi 27 octobre 2008 09:58