在 Visual Studio 2005、2008 和 2010 中,是否可以为特定 ProjectFlavor 的项目定义仅出现在“添加项目”对话框中的项目模板?如果我能提供帮助,我宁愿不要把所有其他不相关项目的“添加项目”对话框弄得一团糟。
似乎这<ProjectType>CSharp</ProjectType>
是一个固定的枚举,我找不到 ProjectFlavor guid 或其他的任何地方。
我没有看到任何其他产品表现出这种克制的例子,但我想确定一下。
=====
好的,亚伦的小费很有希望,但我的第一次尝试没有成功。
在 .vs 模板中:
<TemplateData>
<Name>MyProject A File</Name>
<Description>MyProject A File to do stuff</Description>
<Icon>A.ico</Icon>
<TemplateID>TemplateID_A</TemplateID>
<TemplateGroupID>MyTemplateGroupID</TemplateGroupID>
<ProjectType>CSharp</ProjectType>
<RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
<SortOrder>20</SortOrder>
<NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
<DefaultName>Template_A.cs</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<ShowByDefault>false</ShowByDefault>
</TemplateData>
<TemplateContent>
<ProjectItem ReplaceParameters="true">Template_A.cs</ProjectItem>
</TemplateContent>
在 package.cs 上:
// [ProvideProjectItem(typeof(MyProjectFactory), "MyTemplateGroupID",
// @"Templates\ProjectItems", 600)] // Took this out.
[ProvideProjectFactory(typeof(MyProjectFactory),
"My Project", "My Project Files (*.csproj);*.csproj",
null, null, @"Templates\Projects",
LanguageVsTemplate = "CSharp",
NewProjectRequireNewFolderVsTemplate = true,
TemplateGroupIDsVsTemplate="MyTemplateGroupID",
TemplateIDsVsTemplate = "TemplateID_A,TemplateID_B")]
public sealed class MyPackage : Package { ... }