Visual Studio项模板仅适用于控制台应用程序

时间:2017-01-14 22:02:00

标签: visual-studio templates visual-studio-2015 sidewaffle

我目前正在整合一个.vsix,其中包含使用SideWaffle和TemplateBuilder v1.1.4.9-beta的各种项目和项目模板。在实验实例中运行项目时,我可以看到它们应该位于的所有项目模板,但是除了控制台应用程序之外的任何项目类型的“添加新项”对话框中都没有项模板。如果我将项目编译为.vsix版本并以传统方式为Visual Studio安装它,行为是相同的。

一个示例模板的文件夹结构供参考:

enter image description here

CSharp.vestemplate的内容:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
  <TemplateData>
    <ProjectType>CSharp</ProjectType>
    <DefaultName>my_layout.xml</DefaultName>
    <Name>My Layout</Name>
    <Description>My Description</Description>
    <Icon>icon.png</Icon>
    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
    <TemplateID>65197798-4682-45e6-9bf4-d2d9e2929527</TemplateID>
    <SortOrder>1000</SortOrder>
  </TemplateData>
  <TemplateContent>
    <References />
    <ProjectItem ReplaceParameters="true" TargetFileName="$fileinputname$.xml">my_layout.xml</ProjectItem>
  </TemplateContent>
</VSTemplate>

我已经尝试过了:

  • 在.vstemplate中设置ShowByDefault,ProjectSubType和TemplateGroupID的值
  • 摆弄文件夹结构
  • 将我的.csproj和.vsixmanifest文件与其他模板包(如SideWaffle
  • )逐行比较

但到目前为止一切都无济于事。

1 个答案:

答案 0 :(得分:0)

尽管Microsoft的documentation缺少对它们的引用,但TemplateGroupId类型MonoAndroidXamarin.iOS可用,并且必须在模板的.vstemplate中指定。将以下元素添加到TemplateData元素会使模板正确显示:

<TemplateGroupID>MonoAndroid</TemplateGroupID>

令人沮丧的是,可用的TemplateID似乎没有在任何地方正确记录,并且那些有效的IDID遵循看似随机的命名约定(人们会期望MonoAndroidMonoTouch或{{ 1}}和Xamarin.Android,但只有Xamarin.iOSMonoAndroid实际上有效...)。