2008-11-03 7 views
2

Je cherche à créer un modèle Visual Studio 2008 qui créera un projet de base et basé sur la suppression de certains fichiers/dossiers en fonction des options saisies par l'utilisateur.Création de modèles Visual Studio

Pour l'instant, j'ai suivi quelques tutoriels en ligne qui m'ont permis de créer le formulaire pour interroger l'utilisateur et passer les données dans une classe IWizard, mais je ne sais pas quoi faire à partir de là.

Les tutoriels fournissent un échantillon pour faire une substitution simple: code:

Form1 form = new Form1(); 
DialogResult dlg = form.ShowDialog(); 
if (dlg == DialogResult.OK) 
{ 
    foreach (KeyValuePair<string, string> pair in form.Parameters) 
    { 
     if (!replacementsDictionary.ContainsKey(pair.Key)) 
      replacementsDictionary.Add(pair.Key, pair.Value); 
     else 
      replacementsDictionary[pair.Key] = pair.Value; 
    } 
} 
form.Close(); 

mais je suis à la recherche d'inclure sélectivement les fichiers en fonction des paramètres de l'utilisateur, et si possible, de manière sélective les sections de code dans un fichier basé sur les paramètres.

Y a-t-il un moyen astucieux de le faire, ou dois-je supprimer manuellement les fichiers de projet dans IWizard: ProjectFinishedGenerating()?

Répondre

3

Dans mon expérience, ShouldAddProjectItem est appelée uniquement pour dossiers dans le projet modèle. En tant que tel, c'est à peu près inutile. Au lieu de cela, vous devrez mettre du code dans votre implémentation ProjectFinishedGenerating qui utilise l'API VS pour supprimer ProjectItems.

là, vous pouvez supprimer des éléments comme ceci:

ProjectItem file = project.ProjectItems.Item("File.cs"); 
file.Remove(); 
0

Si je comprends bien, vous voulez être en mesure de déterminer si vous devez ou non ajouter des éléments de projet à un projet.

Si tel est le cas, vous pouvez implémenter IWizard.ShouldAddProjectItem et renvoyer si vous souhaitez que le fichier soit ajouté ou non.

+0

Ceci est très utile, mais j'aimerais aussi savoir s'il est possible d'inclure sélectivement des parties d'un fichier en fonction des paramètres. La réponse à votre fournisseur ici est super. Je vous remercie. –

1

Vous pouvez inclure sélectivement des parties d'un fichier en utilisant $if$ avec le remplacement. Voir, par exemple, ce bit dans le modèle par défaut de bibliothèque de classes C#:

<ItemGroup> 
    <Reference Include="System"/> 
    $if$ ($targetframeworkversion$ >= 3.5) 
    <Reference Include="System.Core"/> 
    <Reference Include="System.Xml.Linq"/> 
    <Reference Include="System.Data.DataSetExtensions"/> 
    $endif$ 

... etc.

Questions connexes