2012-03-29 11 views
5

Actualmente estoy desarrollando una plantilla de proyectos múltiples. Estoy utilizando el enfoque documentado aquí: How to: Create Multi-Project Templates. Esta plantilla tendrá una plantilla de sitio web principal (modelada según el temaplte de MVC 3) y algunas plantillas de biblioteca de llamadas adicionales para mantener la funcionalidad separada.VS 2010 Plantilla de proyectos múltiples: Referencias entre proyectos

Ejemplo: WebsiteProject1 vive en una carpeta en el proyecto de plantilla y tiene todos sus archivos y .vstemplate debajo de esa carpeta. ClassLibrary1 vive en otra carpeta en el proyecto de plantilla y también tiene su propio archivo .vstemplate.

Mi pregunta es, ¿cómo configuro referencias en el WebsiteProject1 para ClassLibrary1 para que cuando el proyecto se crea a partir de la plantilla, las referencias estén presentes y resueltas? ¿Esto es posible?

Respuesta

5

Estaba trabajando en una configuración similar hoy y encontré que sí es posible, pero requiere una adaptación manual del archivo csproj de su WebsiteProject después de exportar la plantilla. También hay algún tipo de error donde no hay reemplazo de token en la etiqueta Nombre bajo la etiqueta ProjectReference.

Básicamente desea que el archivo csproj para contener lo siguiente:

<ItemGroup> 
    <ProjectReference Include="..\$SolutionName$.Library\$SolutionName$.Library.csproj"> 
     <Project>{8a8efea7-e80c-4de2-8c35-ced49a814675}</Project> 
     <Name>ClassLibrary</Name> 
    </ProjectReference> 
</ItemGroup> 

Tenga en cuenta que yo no reemplazar el nombre > valor < etiqueta ya que las sustituciones de token no funcionan. Afortunadamente, esto no parece obstaculizar el funcionamiento de la referencia.

EDIT: El uso del $ safeprojectname $ se referirá al proyecto en sí. Si su biblioteca de clase tiene un nombre codificado esto no es realmente un problema, pero en mi caso quería un nombre como "NewProject.Library" Lo resolví agregando un parámetro personalizado $ SolutionName $ como este en mi archivo de vstemplate de proyectos múltiples:

<CustomParameters> 
    <CustomParameter Name="$SolutionName$" Value="$safeprojectname$"/> 
</CustomParameters> 
+0

¿En qué parte del archivo vstemplate Multi-Project colocaste el bloque 'CustomParameters'? Lo agregué y cambié mi '.proj' para usar' $ SolutionName $ ', pero no lo he reemplazado y deja esos caracteres exactos allí. – KyleMit

+1

@KyleMit La etiqueta se encuentra en mi como primer elemento secundario. – IvanL

+0

Huh, ahí es donde lo tenía y The Visual Studio Designer me dio este [** warning **] (http://i.imgur.com/H5eGQJF.png). Aunque los [documentos de MSDN] (http://msdn.microsoft.com/en-us/library/ms247063.aspx) parecen estar de acuerdo con usted. Tal vez tengo un problema en otro lado. – KyleMit

Cuestiones relacionadas