c# - Plantillas de proyecto "One ASP.NET" personalizadas en Visual Studio 2013
visual-studio visual-studio-2013 (1)
¿Has visto la muestra Hot Towel MVC de John Papa? http://visualstudiogallery.msdn.microsoft.com/1eb8780d-d522-4dcf-bf56-56f0eab305c2
Al abrir el archivo VSIX en WinRAR, los bits clave, en HotTowelSpa.2013.vsix/ProjectTemplates/HotTowelSpaProjectTemplate.cshtml/HotTowelSpaProjectTemplate.cshtml.vstemplate
, parecen ser:
<ProjectType>CSharp</ProjectType>
<ProjectSubType>Web</ProjectSubType>
<TemplateGroupID>Web</TemplateGroupID>
Editar
De hecho, parece que tiene que especificar, específicamente, que el tipo de proyecto es MVC: http://www.asp.net/mvc/tutorials/mvc-4/custom-mvc-templates
Desde la página:
El atributo Tipo de cada elemento se debe establecer en Microsoft.VisualStudio.Mvc.Template. Este es un espacio de nombres personalizado que solo el asistente de proyectos MVC entiende.
El simple hecho de agregar los archivos a VSIX no es suficiente para registrar las plantillas con el asistente MVC. Debe proporcionar información como el nombre de la plantilla, la descripción, los motores de visualización compatibles y el lenguaje de programación para el asistente de MVC. Esta información se transporta en atributos personalizados asociados con el elemento para cada archivo vstemplate.
Mirando en extensions.vsixmanifest
, de hecho veo <Asset ... ProjectType="MVC"...
y los activos marcados con Type="Microsoft.VisualStudio.Mvc.Template"
Gol:
Integre plantillas de proyecto dentro de la colección "One ASP.NET" de Visual Studio 2013.
Fondo:
El proyecto "a distribuir" comenzó como un nuevo proyecto de aplicación web ASP.NET , utilizando la plantilla vacía y las "carpetas y referencias" de MVC y web API marcadas. Desde allí agregué mi amor y afecto y utilicé Exportar Plantilla . El archivo zip aterriza en My Documents > Visual Studio 2013 > My Exported Templates
. Si tiene Visual Studio, instale la plantilla por usted, se colocará un zip duplicado en My Documents > Visual Studio 2013 > Templates > ProjectTemplates
. Aquí es donde comienza el problema ...
Problema:
En Visual Studio, la plantilla se encuentra dentro de la rama del árbol de Visual C # , no una plantilla personalizada dentro de la plantilla de la aplicación web ASP.NET . Gorrón. Aún más extraño, la plantilla se instala solo en C # y no en su subcarpeta web .
La documentación en línea de MSDN mencionó un <ProjectSubType>
dentro del archivo .vstemplate
, que estaba vacío cuando lo investigué, pero incluso al agregar explícitamente Web no cambió la ubicación de la interfaz de usuario. ¿Esto no tiene nada que ver con mi objetivo realmente, pero parece sugerir que VS2013 no cumple con algunos de los XML dentro de .vstemplate
?
Más información:
Comencé a cavar a través de los Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/ProjectTemplates/
y una de las cosas extrañas que noté fueron dos "árboles de carpetas" separados: {root}/Web/CSharp/1033
y {root}/CSharp/Web/1033
.
El primer árbol contenía WebTemplate45 y su proyecto WebApplication45Dev12.vstemplate
ilustra los valores de ProjectType
y ProjectSubtype
mencionados anteriormente. Imitar esto no cambió nada.
El segundo árbol también contenía un WebTemplate45 con WebTemplate.vstemplate
incluido. Este fue significativamente diferente porque su Type=ProjectGroup
y hacía referencia a TemplateGroupID
y la curiosa etiqueta WizardExtension
que hacía referencia a OneASPNetProjectTemplateWizard
. Supongo que esta es la plantilla de papá que muestra los que se muestran en la imagen mostrada.
Pregunta (s)
¿Qué se necesita para entregar un paquete de proyecto en la ventana emergente "One ASP.Net"? Alteraciones de registro? VSIX?
Si no es posible, ¿hay alguna forma de clonar la ventana de papá para todos los proyectos personalizados? Ex. Imagine la ventana que se muestra con solo las plantillas secundarias de una empresa.