Как установить местоположение шаблона проекта в окне «Новый проект» в элементе TemplateData

Я создаю новый шаблон проекта как проект расширения Visual Studio и хочу, чтобы он отображался в моей настраиваемой группе, которая существует до установки шаблона проекта, в узле Visual C#.

введите здесь описание изображения

Я надеялся, что можно настроить расположение шаблона проекта в разделе .vstemplate файла TemplateData. Я пытался установить значение ProjectSubType, TemplateGroupID, NumberOfParentCategoriesToRollUp, но это не работает. Когда экспериментальный экземпляр Visual Studio запускается, шаблон проекта всегда находится в группе Visual C#, но не в Visual C#/Моя группа. ProjectSubType не работает, даже если Моя группа уже существует, но документация говорит, что он должен быть создан в подгруппе. Как указать местоположение шаблона проекта в разделе TemplateData?


person Dmytro    schedule 15.03.2018    source источник


Ответы (1)


Пользовательские шаблоны не включают подкаталог для локализованных шаблонов. Вы можете изменить каталог по умолчанию для пользовательских шаблонов в диалоговом окне «Параметры» в разделе «Среда\Проекты и решения».

Я часто добавляю папку вручную, а затем копирую zip-файл, например, я создаю папку под названием «Моя группа» в папке C:\Users\xxx\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#.

А затем создайте простое консольное приложение под названием Jack и экспортируйте этот шаблон проекта, я не выбирал этот параметр. введите здесь описание изображения

Затем я копирую Jack.zip в указанную выше папку «Моя группа». Повторно откройте VS, я получу этот шаблон проекта в папке My Group.

введите здесь описание изображения

Это файл .vstemplate по умолчанию на моей стороне:

    <VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData>
    <Name>Jack</Name>
    <Description>&lt;No description available&gt;</Description>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>Jack</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <Project TargetFileName="Jack.csproj" File="Jack.csproj" ReplaceParameters="true">
      <ProjectItem ReplaceParameters="true" TargetFileName="App.config">App.config</ProjectItem>
      <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem>
      <Folder Name="Properties" TargetFolderName="Properties">
        <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
      </Folder>
    </Project>
  </TemplateContent>
</VSTemplate>
person Fletcher    schedule 16.03.2018
comment
Спасибо за ваш ответ, но я не хочу вручную копировать установленный шаблон. Я экспортирую свой шаблон как расширение Visual Studio. И после того, как я соберу файл VSIX и установлю свое расширение, я хочу, чтобы мой шаблон был на месте без каких-либо ручных манипуляций. - person Dmytro; 16.03.2018
comment
Если да, может ли он создать новую папку «Моя группа» в папке шаблона проекта по умолчанию? Может ли он скопировать zip-файл в созданную папку в вашем проекте VSIX? - person Jack Zhai-MSFT; 19.03.2018
comment
Итак, что вы предлагаете, это создать папку и скопировать установленный файл шаблона .zip с кодом С#? Считается ли это хорошей практикой? Разве нет встроенных методов? И если да... Где я должен обрабатывать это событие Installation Completed? - person Dmytro; 21.03.2018