2010-12-12 4 views
2

как описано здесь http://davidhayden.com/blog/dave/archive/2005/11/05/2556.aspx можно настроить шаблон элемента проекта.Шаблон проекта: где Visual Studio определяет зависимости?

Но на данный момент я просто попытаюсь понять, как это работает. Например, я расстегнула файл UserControl и в usercontrol.vstemplate я не могу видеть, как mycontrol.designer.cs зависит от mycontrol.cs, как это появляется в файле проекта, как:

<DependentUpon>mycontrol.cs</DependentUpon> 

так что любая идея?

Обновление: может ли эта зависимость не указываться где-нибудь в шаблоне типа проекта? Это было бы более умно, чем полагаться на эвристическое правило IDE, которое довольно ограничено, поскольку оно может распознавать только .Designer.cs, а не, например, .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> 

ответ

1

Для типов, которые IDE знает как Window, он автоматически определяет его.

Но если вы хотите объединить файлы, которые не известны дизайнеру/использовать другой шаблон именования для файлов, вам необходимо вручную добавлять теги. Я пробовал это в проекте, и я пришел к выводу, что это просто не стоит того, что IDE будет автоматически переименовывать зависимые файлы, о которых он знает (при изменении имени файла основного файла).

+0

Вручную добавление тега в данный момент я делаю :( – user310291

+0

Да, мне тоже показалось интересным. Но я часто переименовываю файлы (у меня есть один класс на файл и сохранить имена одинаковыми). Мне пришлось выгрузить проект, сменить ссылки, а затем загрузить проект каждый раз, когда я реорганизовал имя класса. Это быстро стало слишком много работать, чтобы получить более красивое дерево файлов. – Stefan

2

В среде IDE достаточно умны, чтобы понять это сам по себе. Попробуйте это в примерном проекте: Project + Добавить новый элемент, класс, назвали его Foo.cs. Повторите, теперь назовите его Foo.Designer.cs. Обратите внимание, как это автоматически становится подпунктом Foo.cs. Название «.Designer» имеет название.

+0

Что делать, если я хочу .mycustom.cs? Если я могу полагаться только на IDE, я застрял. Есть ли способ указать шаблон проекта или что-нибудь еще? – user310291

+0

Не то, что я нашел до сих пор, но это может быть одна из тех недокументированных функций. – Stefan

Смежные вопросы