¿Qué pasa con mi plantilla de Visual Studio 2008?

Estoy tratando de crear mi propia plantilla de clase para Visual Studio llamada “Clase pública”.

Seguí las instrucciones oficiales de MSDN sobre cómo crear manualmente una plantilla de elementos de forma bastante parecida a la letra, pero no tengo suerte en que la plantilla aparezca en la sección “Mis plantillas” del cuadro de diálogo “Agregar nuevo elemento”.

Coloqué PublicClass.zip en el siguiente directorio de Windows XP:

C: \ Documents and Settings \ Mi nombre de usuario \ Mis documentos \ Visual Studio 2008 \ Templates \ ItemTemplates \ Visual C #.

Public Class.zip contiene los siguientes archivos:

  1. PublicClass.cs
  2. PublicClass.ico
  3. PublicClass.vstemplate

PublicClass.cs contiene …

using System; using System.Collections.Generic; $if$ ($targetframeworkversion$ == 3.5)using System.Linq; $endif$using System.Text; namespace Pse.$projectname$ { public class $safeitemname$ { } } 

PublicClass.vstemplate contiene …

    Public Class An empty class declaration with access modifier = public and namespace = Pse.NameOfProject PublicClass.ico CSharp PublicClass.cs   PublicClass.cs   

Comencé con Studio, intenté agregar un nuevo elemento a mi proyecto, pero mi plantilla no se encontraba en ninguna parte. Entonces, seguí el consejo de esta pregunta de stackoverflow , que era llamar …

 devenv.exe /installvstemplates 

… desde la línea de comandos, pero todo lo que hizo fue hacer desaparecer todas las plantillas (incluidas las integradas). Después de unos momentos de pánico, finalmente los recuperé después de ejecutar el comando varias veces, pero claramente esa no fue la respuesta para mí.

Si ve algo malo con mi procedimiento aquí, ¿puede ayudarme, por favor?

Gracias por adelantado.

EDITAR:

Si uso Archivo / Exportar plantilla (como lo sugiere Preet), la plantilla aparece en Mis plantillas, pero los parámetros no se están reemplazando correctamente.

Si inserto una nueva “Clase pública”, esto es lo que obtengo:

 using System; using System.Collections.Generic; $if$ (3.5 == 3.5)using System.Linq; $endif$using System.Text; namespace Pse.$projectname$ { public class PublicClass1 { } } 

Por lo tanto, solo $projectname$ y $targetframeworkversion$ están reemplazando correctamente. No está manejando el $if$ statement o $projectname$ correctamente. (También intenté usar $safeprojectname$ , pero eso no hizo ninguna diferencia.)

Este es definitivamente uno de esos casos en los que tratar de hacer mi vida un poco más cómoda tuvo exactamente el efecto opuesto 🙂

Tuve este problema 🙂

Y creo que logré resolverlo. Estaba haciendo algo muy similar. Lo que realmente quería era tener una plantilla estándar con encabezados para nuestro sistema svn. Terminé extrayendo el archivo Class.zip existente en Foo: \ Archivos de progtwig \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 y luego editándolo terminé con esto

 // $Id$ // $Author$ namespace $rootnamespace$ { using System; using System.Collections.Generic; $if$ ($targetframeworkversion$ == 3.5) using System.Linq; $endif$ using System.Text; public class $safeitemrootname$ { } } 

El espaciado de la instrucción $ if $ parecía hacer una diferencia. Si tuviera tabs o espacio delante de ellas, no se evaluarían correctamente o, si no, se evaluaron según lo que está viendo, pero simplemente se imprimieron en mi código.

En cuanto a la desaparición de sus plantillas cuando ejecuta / installvstemplates, lo que está sucediendo es que puede notar que cmd tarda bastante en ejecutarse, lo que está haciendo es eliminar Foo: \ Archivos de progtwig \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplatesCache y luego reconstruir esa carpeta extrayendo los archivos zip en las ubicaciones originales como se mencionó anteriormente. Para que este comando se comporte, Visual Studio es mejor apagarlo mientras lo ejecuta y debe esperar hasta que el comando termine para reiniciarlo. (consejo que solía monitorear la carpeta y verla construir).

Personalmente, aunque este es un sistema flexible, microsoft realmente podría haberlo hecho más fácil para el usuario, después de todo R # tiene esto como una simple función de clic derecho, si tiene R # esta es la forma más fácil de implementar plantillas fuera del sistema ms.

Si desea que funcione en Visual Studio 2008, debe cambiar a en su archivo .vstemplate. Luego coloque el archivo .zip en la ubicación que ha designado como plantillas de elementos de usuario .

Tuve problemas con el archivo ZIP creado manualmente. A menos que hiciera una exportación de una plantilla existente y la cambiara, nunca aparecería la plantilla. Estas son las instrucciones