5

He creado con éxito una plantilla de solución multiproyecto. Lo que me gustaría hacer, sin embargo, es cambiar el nombre del comienzo de cada proyecto con el nombre de la solución.Plantillas de proyectos múltiples de Visual Studio renombrar espacios de nombres y nombres de proyectos

Así que mis proyectos:

  • ProjectOne.A
  • ProjectTwo.B

sería renombrada a

  • SolutionName.A
  • SolutionName.B

donde SolutionName es el nombre del usuario cuando crearon el proyecto.

He leído los artículos siguientes:

pero ninguno parece responder a mi situación específica.

+0

Voy a tener una entrada en el blog relacionada con esto muy pronto (al día siguiente más o menos): http://compositecode.com – Adron

+0

@Adron - puede publicar el enlace exacto. No quiero buscar el artículo correcto. – Omar

+0

Aún no he probado lo que sugirió, pero confiaré en que funciona según el comentario de Myles. – Omar

Respuesta

7

Si su principal .vstemplate (de la solución de uno) es como el ejemplo siguiente, puede utilizar variables definidas en el diccionario del asistente para cambiar el nombre de las carpetas del proyecto y .csproj a cualquier nombre que desee.

<?xml version="1.0" encoding="utf-8"?> 
<VSTemplate Version="2.0.0" Type="ProjectGroup" 
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"> 
    <TemplateData> 
     <Name>My Web Server Solution with DAL</Name> 
     <Description>Creates Projects for Web Server DAL and adds them to a new or existing solution</Description> 
     <Icon></Icon> 
     <ProjectType>CSharp</ProjectType> 
     <ProjectSubType>My</ProjectSubType> 
     <DefaultName>WebServer</DefaultName> 
     <NumberOfParentCategoriesToRollUp>2</NumberOfParentCategoriesToRollUp> 
     <TemplateGroupID>My</TemplateGroupID> 
     <TemplateID>My.Dal.Web.Template</TemplateID> 
    </TemplateData> 
    <TemplateContent> 
     <ProjectCollection> 
      <ProjectTemplateLink ProjectName="$ModelProjectName$"> 
       Children\Model\ProjectTemplate.vstemplate 
      </ProjectTemplateLink> 
      <ProjectTemplateLink ProjectName="$SharedModelContractsProjectName$"> 
       Children\SharedModelContracts\ProjectTemplate.vstemplate 
      </ProjectTemplateLink> 
      <ProjectTemplateLink ProjectName="$RepositoryInterfacesProjectName$"> 
       Children\RepositoryInterfaces\ProjectTemplate.vstemplate 
      </ProjectTemplateLink> 
      <ProjectTemplateLink ProjectName="$RepositoryImplementationProjectName$"> 
       Children\RepositoryImplementation\ProjectTemplate.vstemplate 
      </ProjectTemplateLink> 
      <ProjectTemplateLink ProjectName="$RepositoryExtensionsProjectName$"> 
       Children\RepositoryExtensions\ProjectTemplate.vstemplate 
      </ProjectTemplateLink> 
     </ProjectCollection> 
    </TemplateContent> 
    <WizardExtension> 
     <Assembly>My.WebServerDalExtension.Wizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5c93c79b0feae916</Assembly> 
     <FullClassName>My.WebServerDalExtension.Wizard.Controller</FullClassName> 
    </WizardExtension> 
</VSTemplate> 

Use cambios similares a .vstemplates sumar (.vstemplates de los proyectos) para cambiar el nombre de los archivos Csproj.

+0

¡Justo lo que estaba buscando! Muchas gracias. –

+0

Algunos de estos proyectos se referencian entre sí, pero los marcadores de posición '$ safeitemname $' y '$ safeprojectname $' no se reemplazan o reemplazan con el valor incorrecto. ¿Alguna idea sobre cómo hacer referencia a proyectos juntos? – Omar

+0

Sí, lea todos los nombres de proyectos de su asistente. Tener las variables de uso de referencia de cada proyecto definidas en el asistente. Vea este ejemplo: http://vsix.codeplex.com/ –

Cuestiones relacionadas