Visual Studio 项目模板仅适用于控制台应用程序
Visual Studio item templates only available for console applications
我目前正在整理一个 .vsix,其中包含使用 SideWaffle 和 TemplateBuilder v1.1.4.9-beta 的各种项目和项目模板。当 运行 实验实例中的项目时,我可以在应有的位置看到所有项目模板,但项目模板在“添加新项目”对话框中对于除控制台应用程序之外的任何项目类型不可用。如果我将项目编译为发行版 .vsix 并以传统方式为 Visual Studio 安装它,行为是相同的。
一个示例模板的文件夹结构供参考:
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)的文件
但到目前为止都无济于事。
尽管 Microsoft documentation 没有对它们的任何引用,TemplateGroupId
类型 MonoAndroid
和 Xamarin.iOS
可用,并且必须在模板的 .vstemplate
.将以下元素添加到 TemplateData 元素可使模板正确显示:
<TemplateGroupID>MonoAndroid</TemplateGroupID>
令人沮丧的是,可用的 TemplateID 似乎没有在任何地方正确记录,而那些确实有效的模板遵循看似随机的命名约定(人们会期望 MonoAndroid
和 MonoTouch
,或者Xamarin.Android
和 Xamarin.iOS
,但实际上只有 MonoAndroid
和 Xamarin.iOS
有效...)。
我目前正在整理一个 .vsix,其中包含使用 SideWaffle 和 TemplateBuilder v1.1.4.9-beta 的各种项目和项目模板。当 运行 实验实例中的项目时,我可以在应有的位置看到所有项目模板,但项目模板在“添加新项目”对话框中对于除控制台应用程序之外的任何项目类型不可用。如果我将项目编译为发行版 .vsix 并以传统方式为 Visual Studio 安装它,行为是相同的。
一个示例模板的文件夹结构供参考:
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)的文件
但到目前为止都无济于事。
尽管 Microsoft documentation 没有对它们的任何引用,TemplateGroupId
类型 MonoAndroid
和 Xamarin.iOS
可用,并且必须在模板的 .vstemplate
.将以下元素添加到 TemplateData 元素可使模板正确显示:
<TemplateGroupID>MonoAndroid</TemplateGroupID>
令人沮丧的是,可用的 TemplateID 似乎没有在任何地方正确记录,而那些确实有效的模板遵循看似随机的命名约定(人们会期望 MonoAndroid
和 MonoTouch
,或者Xamarin.Android
和 Xamarin.iOS
,但实际上只有 MonoAndroid
和 Xamarin.iOS
有效...)。