在Visual Studio 2013中自定义"一个ASP.NET"项目模板

one*_*mer 19 c# asp.net visual-studio visual-studio-templates visual-studio-2013

目标:

在Visual Studio 2013的"One ASP.NET"集合中集成项目模板.

带有假自定义模板的新ASP.NET项目


背景:

"待分发"项目始于一个新的ASP.NET Web应用程序项目,使用Empty模板和MVC和Web API"文件夹和引用"进行检查.从那里我添加了我的爱和感情,并使用了导出模板.拉链落地My Documents > Visual Studio 2013 > My Exported Templates.如果您有Visual Studio为您安装模板,则会在其中放置一个重复的zip My Documents > Visual Studio 2013 > Templates > ProjectTemplates.这是问题的开始......


问题:

在Visual Studio中的模板是内发现的Visual C#树枝,而不是一个自定义模板ASP.NET Web应用程序模板.游民.更奇怪的是,模板仅安装到C#而不安装到其Web子文件夹.

MSDN在线文档提到<ProjectSubType>的内.vstemplate文件,当我调查了这是空的,但即使明确添加Web并未改变UI位置.这与我的目标无关,但似乎暗示VS2013不尊重其中的一些XML .vstemplate

更多信息:

我开始挖掘Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ProjectTemplates\其中一个奇怪的东西,我发现它是两个独立的"文件夹树":{root}\Web\CSharp\1033{root}\CSharp\Web\1033.

第一棵树持有WebTemplate45,其项目WebApplication45Dev12.vstemplate说明了上面提到的值ProjectTypeProjectSubtype值.模仿这并没有改变任何东西.

第二棵树还WebTemplate.vstemplate包含一个WebTemplate45 .这个是显着不同的,因为它Type=ProjectGroup和它引用了引用该引用的一个TemplateGroupID好奇的WizardExtension标签OneASPNetProjectTemplateWizard.我猜这是爸爸模板,显示在显示的图像中显示的那些.


问题(S)

在"One ASP.Net"弹出窗口中提供项目包需要什么?注册表更改?VSIX?

如果不可能,那么无论如何克隆所有自定义项目的爸爸窗口?防爆.想象一下显示的窗口只列出了公司的子模板.


参考文献:

http://msdn.microsoft.com/en-us/library/xwkxbww4.aspx

http://www.asp.net/mvc/tutorials/mvc-4/custom-mvc-templates

Ste*_*ews 1

您看过 John Papa 的 Hot Towel MVC 示例吗?http://visualstudiogallery.msdn.microsoft.com/1eb8780d-d522-4dcf-bf56-56f0eab305c2

在 WinRAR 中打开 VSIX 文件,其中的关键位HotTowelSpa.2013.vsix\ProjectTemplates\HotTowelSpaProjectTemplate.cshtml\HotTowelSpaProjectTemplate.cshtml.vstemplate似乎是:

<ProjectType>CSharp</ProjectType>
<ProjectSubType>Web</ProjectSubType>
<TemplateGroupID>Web</TemplateGroupID>
Run Code Online (Sandbox Code Playgroud)

编辑

事实上,您似乎必须明确指定项目类型是 MVC: http://www.asp.net/mvc/tutorials/mvc-4/custom-mvc-templates

从页面:

每个元素的 Type 属性必须设置为 Microsoft.VisualStudio.Mvc.Template。这是只有 MVC 项目向导才能理解的自定义命名空间。

仅将文件添加到 VSIX 不足以使用 MVC 向导注册模板。您需要向 MVC 向导提供模板名称、描述、支持的视图引擎和编程语言等信息。此信息包含在与每个 vstemplate 文件的元素关联的自定义属性中。

看看extensions.vsixmanifest,我确实看到了<Asset ... ProjectType="MVC"...并且资产标记为Type="Microsoft.VisualStudio.Mvc.Template"