Шаблоны элементов не отображаются в приложениях Магазина Windows

Я использовал Visual Studio 2012 "Export Template..." для создания нескольких шаблонов элементов C# для одного файла. ZIP-файлы отображаются в "Мои экспортированные шаблоны", и я могу переместить их в каталог "Шаблоны". Когда я затем создаю консольное приложение на C#, шаблоны там хорошо отображаются.

Тем не менее, это для приложения магазина Windows. И я создал этих ребят, чтобы добавить в мое приложение Windows Store. Тем не менее, диалоговое окно Добавить элементы в VS2012 не так, как их там. Я предполагаю, что с XML, сгенерированным VS2012, что-то не так. Кто-нибудь знает?

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
  <TemplateData>
    <DefaultName>KonaViewModelWithBack.cs</DefaultName>
    <Name>KonaViewModelWithBack</Name>
    <Description>&lt;No description available&gt;</Description>
    <ProjectType>CSharp</ProjectType>
    <SortOrder>10</SortOrder>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <References />
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">ConnectToRTMViewModel.cs</ProjectItem>
  </TemplateContent>
</VSTemplate>

1 ответ

Решение

После поиска элементов XML в файле класса VS2012 я наткнулся на TemplateID. Если вы посмотрите туда, то заметите, что он ссылается на TemplateGroupID.

Если вы посмотрите на TempmlateGroupID (VsTemplate) для приложения на основе WinRT (см. Расположение реестра вместе с примечанием BTW ниже), то увидите, что в списке "WinRT-Managed". Если вы измените файл шаблона, добавив к нему установленный TemplateGroupID, VS2012 найдет его правильно:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
  <TemplateData>
    <DefaultName>KonaViewModel.cs</DefaultName>
    <Name>Kona View Model With Back Button</Name>
    <Description>A Kona based View Model which implements a go back button ICommand</Description>
    <ProjectType>CSharp</ProjectType>
    <SortOrder>10</SortOrder>
    <RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
    <Icon>__TemplateIcon.ico</Icon>
    <TemplateGroupID>WinRT-Managed</TemplateGroupID>
  </TemplateData>
  <TemplateContent>
    <References />
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">ConnectToRTMViewModel.cs</ProjectItem>
  </TemplateContent>
</VSTemplate>

Кстати, документы на странице TemplateID msdn являются неправильными, по крайней мере, на моей Win8 Pro с VS2012 Pro современной установки. Информация реестра, отображаемая там, фактически отображается в кусте пользователя DEFAULT, а не в кусте LOCAL_MACHINE).

Другие вопросы по тегам