我们有一堆模板,其中一些模板只有在向C#Web应用程序项目添加新项目时才可见(使用“Web”模板组ID过滤)。但是,我们的许多其他模板都没有意义添加到Web项目(它们旨在添加到标准的C#类库项目)。我想在将新项目添加到C#Web应用程序项目时阻止显示这些模板。
我不确定这是否可行。我知道逆是可能的;创建仅在Web项目下显示的项目模板,但我希望我们的一些模板只显示在无味的C#项目上(不是 WebApp,WPF,Workflow,等)。
我看了HKCU \ Software \ Microsoft \ VisualStudio \ 10.0Exp_Config \ Projects {FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}下的注册表(没有风味的C#项目类型注册),我可以看到它确实没有指定任何基于模板组ID的过滤(所以似乎没有帮助)。调优的项目子类型(例如工作流程)似乎过滤了它们允许您添加的项目(例如,使用模板组ID“WorkflowItemTemplateGroupID”),但似乎没有风味的项目不会过滤其项目,因此任何项目将VisibleByDefault设置为“false”的将始终不可见(因为它们无法指定模板组ID)。
有没有办法做我想做的事情?
答案 0 :(得分:0)
我想出了如何使用SVsRegisterNewDialogFilters service(这是拼图的缺失部分)来做到这一点。
它使您能够提供IVsFilterAddProjectItemDlg实现的实现,只要调用add-project-item对话框(无论谁调用它),就会调用该实现。它使用与Web / Silverlight项目不同的项目类型GUID调用,而不是用于无风的C#项目(因此我可以简单地过滤掉各种模板目录。