2017-07-05 240 views
0

我創建了一個新的VS2017項目模板,因爲Xamarin.Android的C#'Class'模板爲我的口味添加了太多的使用方法。這裏的.vstemplate文件:VS2017項目模板沒有在Xamarin項目中顯示

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item"> 
    <TemplateData> 
    <DefaultName>Class.cs</DefaultName> 
    <Name>Class</Name> 
    <Description>An unfancy C# class.</Description> 
    <ProjectType>CSharp</ProjectType> 
    <SortOrder>10</SortOrder> 
    <Icon>__TemplateIcon.ico</Icon> 
    </TemplateData> 
    <TemplateContent> 
    <References /> 
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Class.cs</ProjectItem> 
    </TemplateContent> 
</VSTemplate> 

我想不通爲什麼,但我Xamarin.Android項目這個項目模板將不會出現。但是,當我創建新的.NET Core/Framework項目時,該模板確實顯示,並單擊添加>新項目

任何線索是什麼原因造成的?我一直在盯着MSDN/StackOverflow的問題半個小時,但沒有一個人似乎對此有所幫助。

我使用VS2017的最新穩定版本,我認爲它是15.2。

回答

0

您需要<AppliesTo/>元素。見AppliesTo

使用您的模板,你會怎麼做:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item"> 
    <TemplateData> 
    <DefaultName>Class.cs</DefaultName> 
    <Name>Class</Name> 
    <Description>An unfancy C# class.</Description> 
    <ProjectType>CSharp</ProjectType> 
    <AppliesTo>CSharp</AppliesTo> 
    <SortOrder>10</SortOrder> 
    <Icon>__TemplateIcon.ico</Icon> 
    </TemplateData> 
    <TemplateContent> 
    <References /> 
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Class.cs</ProjectItem> 
    </TemplateContent> 
</VSTemplate> 
+0

謝謝你的幫助。不幸的是,這會導致* not *出現在之前顯示的位置,例如.NET標準庫中。 「AppliesTo」的所有可能值是什麼?我想嘗試使用他們所有的東西,看看我能得到什麼。 –

+0

按照我在答案中顯示的方式解決了我在測試中遇到的問題。但我只是試圖讓它爲.NET標準(便攜)項目工作。使用舊的項目文件格式。文檔似乎沒有涵蓋可能的值。但我確實發現這個https://github.com/Microsoft/VSProjectSystem/blob/master/doc/overview/about_project_capabilities.md和這個https://github.com/Microsoft/VSProjectSystem/blob/master/doc/overview/ project_capabilities.md它們可能會幫助您追蹤一些要使用的值。 – dfkeenan