Шаблон элемента проекта: где Visual Studio определяет зависимости? - PullRequest
2 голосов
/ 12 декабря 2010

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

Но сейчас я просто пытаюсь понять, как это работает. Например, я разархивировал файл 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>

Ответы [ 2 ]

2 голосов
/ 12 декабря 2010

IDE достаточно умен, чтобы понять это самостоятельно.Попробуйте это в примере проекта: Project + Add New Item, Class, назовите его Foo.cs.Повторите, теперь назовите его Foo.Designer.cs.Обратите внимание, как он автоматически становится подпунктом файла Foo.cs.Часть имени ".Designer" имеет значение.

1 голос
/ 13 декабря 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...