visual una studio pagina objetos net muestra etiqueta errores dinamicos definicion crear concepto como asp aplicaciones aplicacion c# visual-studio parameters visual-studio-templates

c# - una - Plantilla de elemento de Visual Studio $ safeitemname $ no funciona como se esperaba



objetos dinamicos c# (1)

Estoy creando una plantilla de Artículo de Visual Studio para crear algunos archivos que dependen de un archivo ''contenedor''.

El último archivo <ProjectItem SubType="Code" TargetFileName="$fileinputname$/I$fileinputname$ View.cs" ReplaceParameters="true">Container View.cs</ProjectItem> crea una interfaz de vista que espera un cierto tipo de modelo. Sin embargo, el parámetro $safeitemname$ no funcionó como esperaba.

Archivo Contenedor de salida View.cs :

public interface IIMy_Triplet_View : IView<IMy_Triplet_View_Model> { }

Esperado:

public interface IMy_Triplet_View : IView<My_Triplet_Model> { }

Esta es la fuente de la plantilla Container View.cs:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using WebFormsMvp; namespace $rootnamespace$ { public interface $safeitemname$_View : IView<$safeitemname$_Model> { } }

Y el archivo .vstemplate

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item"> <TemplateData> <DefaultName>Model-View-Presenter</DefaultName> <Name>Model-View-Presenter</Name> <Description>Creates a model-view-presenter triplet</Description> <ProjectType>CSharp</ProjectType> <SortOrder>10</SortOrder> <Icon>__TemplateIcon.png</Icon> <PreviewImage>__PreviewImage.png</PreviewImage> </TemplateData> <TemplateContent> <References> <Reference> <Assembly>WebFormsMvp</Assembly> </Reference> </References> <ProjectItem SubType="Code" TargetFileName="$fileinputname$" ReplaceParameters="false">Container</ProjectItem> <ProjectItem SubType="Code" TargetFileName="$fileinputname$/$fileinputname$ Model.cs" ReplaceParameters="true">Container Model.cs</ProjectItem> <ProjectItem SubType="Code" TargetFileName="$fileinputname$/$fileinputname$ Presenter.cs" ReplaceParameters="true">Container Presenter.cs</ProjectItem> <ProjectItem SubType="Code" TargetFileName="$fileinputname$/I$fileinputname$ View.cs" ReplaceParameters="true">Container View.cs</ProjectItem> </TemplateContent> </VSTemplate>


La solución se encuentra aquí: http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/8516524a-22d3-4ed2-b2da-aaafe855fb92/

Agregue un parámetro personalizado (último elemento en TemplateContent):

<VSTemplate Version="3.0.0" ... Type="Item"> <TemplateData> ... </TemplateData> <TemplateContent> ... <CustomParameters> <CustomParameter Name="$basename$" Value="$fileinputname$"/> </CustomParameters> </TemplateContent> </VSTemplate>

Y usa $ basename $ en los archivos en lugar de $ fileinputname $.