2010-01-05 5 views
5

J'ai écrit un générateur de code C# pour générer des entités et des fichiers de classe associés dans notre application Ling-To-SQL. Le générateur de code doit ajouter/supprimer des fichiers dans TFS et également les ajouter/les supprimer d'un fichier .csproj afin qu'ils soient inclus ou exclus correctement dans leurs projets respectifs.Fichier .csproj - Ajout/suppression programmatiques de fichiers

J'ai compris l'interaction TFS mais j'étais curieux quant à la meilleure ou la manière standard d'ajouter ou de supprimer par programme des fichiers à partir de fichiers .csproj. Quelqu'un a-t-il une expérience avec ceci?

Merci - Randy

+0

Comment fonctionne l'interaction TFS? Avez-vous des liens? –

Répondre

1

Une autre option consiste à utiliser le modèle d'automatisation Visual Studio. Depuis Visual Studio, vous pouvez modifier le projet en utilisant le code de macro (VBA). This page on MSDN contient des liens vers la documentation principale des bibliothèques d'automatisation.

En faisant cela, vous pourriez créer une intégration très lisse. Vous pouvez par exemple avoir une macro Visual Studio qui démarre le processus de génération de code, puis ajoute les fichiers résultants au projet.

+0

Cela pourrait être la meilleure approche. Je commençais juste à lire sur l'objet DTE. –

1

Tout est XML. Chargez-le dans un DOM et suivez votre chemin.

+1

Je ne voulais pas simplement "faire mon chemin". Si je me trompe, je vais bousiller tout le projet. Je cherchais un exemple de code pour le faire correctement. –

+0

@RandyMinder vous ne serez pas foirer si vous gardez tout votre code dans le contrôle de la source :) http://github.com! –

0

J'ai vu des générateurs de code qui ne modifient pas le projet. Le projet est toujours conscient des fichiers générés, mais les fichiers réels ne sont pas inclus.

+1

Cela n'a aucun sens pour moi. Comment un projet peut-il être "conscient" des fichiers générés mais ne les a pas réellement inclus dans le projet? À quoi cela sert-il? Les fichiers ne font toujours pas partie du projet. –

0

Vous créez un fichier d'exemple & se référant ensuite à elle vous pouvez modifier le fichier XML cas « .aspx »: {

   if ((File.ReadAllText((GlobalVariables.sDestinationPath).Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention).Contains("<Content Include=\"" + fileName1 + "\" />")) == false) 
        { 
         fileReader = File.ReadAllText(GlobalVariables.sDestinationPath + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "").Replace("<Content Include=\"Web.config\" />", "<Content Include=\"Web.config\" />" + "\n" + " <Content Include=\"" + fileName1 + "\" />"); 
         File.WriteAllText(GlobalVariables.sDestinationPath.Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "", fileReader); 

         fileReader = File.ReadAllText(GlobalVariables.sDestinationPath.Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "").Replace("<Compile Include=\"" + pathfol + "\" />", "<Compile Include=\"" + pathfol + "\" />" + "\n" + " <Compile Include=\"" + fileName1 + ".vb\" > " + "\n" + "  <DependentUpon>" + fileName1 + "</DependentUpon>" + "\n" + "  <SubType>ASPXCodeBehind</SubType>" + "\n" + " </Compile>" + "\n" + " <Compile Include=\"" + fileName1 + ".designer.vb\">" + "\n" + "  <DependentUpon>" + fileName1 + "</DependentUpon>" + "\n" + " </Compile> "); 
         File.WriteAllText(GlobalVariables.sDestinationPath.Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "", fileReader); 
        } 
Questions connexes