2010-12-12 20 views
2

comme expliqué ici http://davidhayden.com/blog/dave/archive/2005/11/05/2556.aspx on peut personnaliser le modèle d'élément de projet. Mais pour l'instant, j'essaie simplement de comprendre comment cela fonctionne. Par exemple, je décompressé le fichier usercontrol et usercontrol.vstemplate je ne vois pas comment mycontrol.designer.cs dépend de mycontrol.cs que apparaissent dans ce fichier projet:Modèle d'élément de projet: où Visual Studio spécifie-t-il des dépendances?

<DependentUpon>mycontrol.cs</DependentUpon> 

donc une idée?

Mise à jour: cette dépendance ne peut-elle pas être spécifiée quelque part dans le modèle de type de projet? Ce serait plus intelligent que de se fier à la règle heuristique de l'IDE qui est plutôt limitée puisqu'elle ne peut que reconnaître .Designer.cs et pas par exemple .MyCustom.cs.

usercontrol.vstemplate:

<?xml version="1.0" encoding="utf-8"?> 
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"> 
    <TemplateData> 
    <Name Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2295" /> 
    <Description Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2296" /> 
    <Icon Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="4532" /> 
    <TemplateID>Microsoft.CSharp.WindowsFormsUserControl</TemplateID> 
    <ProjectType>CSharp</ProjectType> 
    <SortOrder>94</SortOrder> 
    <RequiredFrameworkVersion>2.0</RequiredFrameworkVersion> 
    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp> 
    <DefaultName>UserControl.cs</DefaultName> 
    </TemplateData> 
    <TemplateContent> 
    <References> 
    <Reference> 
    <Assembly>System</Assembly> 
    </Reference> 
    <Reference> 
    <Assembly>System.Data</Assembly> 
    </Reference> 
    <Reference> 
    <Assembly>System.Drawing</Assembly> 
    </Reference> 
    <Reference> 
    <Assembly>System.Windows.Forms</Assembly> 
    </Reference> 
    <Reference> 
    <Assembly>System.Xml</Assembly> 
    </Reference> 
    </References> 

    <ProjectItem ReplaceParameters="true" SubType="UserControl">UserControl.cs</ProjectItem> 
    <ProjectItem ReplaceParameters="true">UserControl.Designer.cs</ProjectItem> 
    </TemplateContent> 
</VSTemplate> 

Répondre

1

Pour les types l'EIDE sait comme la fenêtre il le comprend automatiquement. Mais si vous voulez combiner des fichiers qui ne sont pas connus du concepteur/utiliser un autre modèle de dénomination pour les fichiers, vous devez ajouter manuellement des balises. J'ai essayé ceci dans un projet et j'ai conclu que cela n'en valait pas la peine, car l'EDI ne renommerait automatiquement que les fichiers dépendants qu'il connaît (quand vous changez le nom du fichier principal).

+0

Ajout manuel d'une balise en cours c'est ce que je fais :( – user310291

+0

Ouais, cela m'a paru intéressant aussi, mais je renomme souvent les fichiers (j'ai je devais décharger le projet, changer les références, puis charger le projet à chaque fois que je refaisais un nom de classe, cela devenait vite trop de travail pour obtenir une arborescence de fichiers plus jolie. – Stefan

2

L'IDE est assez intelligent pour comprendre cela par lui-même. Essayez ceci dans un exemple de projet: Projet + Ajouter un nouvel élément, Classe, nommé Foo.cs. Répétez, maintenant nommez-le Foo.Designer.cs. Notez comment il devient automatiquement un sous-élément de Foo.cs. La partie ".Designer" du nom est importante.

+0

Et si je veux .mycustom.cs? Si je peux seulement compter sur IDE, je suis coincé. Est-il possible de spécifier avec le modèle de type de projet ou autre chose? – user310291

+0

Ce que je n'ai pas trouvé jusqu'à maintenant, mais c'est peut-être une de ces fonctionnalités non documentées – Stefan