2010-09-01 19 views
8

Quiero generar un fragmento utilizando T4 pero después de agregar un archivo .tt al proyecto Wix no hay una opción "Herramienta personalizada" para este archivo. Y no hay ningún elemento de menú "Ejecutar herramienta personalizada" al hacer clic derecho en el archivo .tt.Wix & T4: ninguna opción "Herramienta personalizada"

¿Hay algún truco para esto? Estoy usando VS 2010 y la última versión de Wix 3.5

+0

Véase más abajo para mi "cortar". También estoy usando VS2010 y Wix 3.x. – Brian

+0

Abrí una solicitud de función con el equipo de WiX para esto. Tal vez usted (u otros) puede agregar su voz a ese problema? http://wixtoolset.org/issues/4657/ –

+0

Vea también esta pregunta http://stackoverflow.com/q/27983416/62662 –

Respuesta

1

Nunca he usado T4 y mucho menos con WiX, pero un google de esta muestra varios éxitos interesantes, incluido el último preguntando lo que estás preguntando pero nadie conocía el responder.

T4 template to generate Wix scripts to generate WCF MSIs in MSBuild

How to use MSBuild and Wix to create msi package...

[WiX usuarios] WiX 3.0 Soporte para plantillas de T4 en Visual Studio 2008] 3

+0

-1 Por no responder realmente la pregunta. – GarethJ

+0

Bueno, al menos intenté investigar el cartel sin decir algo grosero como "Déjame Google eso para ti". La cuestión de T4 con WiX es tan obvio que las posibilidades de que alguien brinde alguna vez una respuesta real son escasas o casi inexistentes y simplemente se fue de la ciudad. –

+0

@Christopher No es realmente tan oscuro. En WiX, cada archivo incluido debe referenciarse manualmente, por lo que es natural querer encontrar una manera de automatizarlo, y T4 es una primera opción obvia. – Brian

3

El sistema de proyectos Wix VS lamentablemente no es compatible con los generadores de archivos individuales, por lo no obtendrás la experiencia predeterminada de T4.

Tienes un par de opciones. T4Toolbox de Oleg Sych tiene herramientas para ejecutar plantillas que se dirigen a otros proyectos, para que pueda ejecutarlas en un proyecto y orientar la salida a su proyecto de WiX.

Alternativamente, T4 tiene un servicio simple API STextTemplating. Podría escribir un pequeño complemento VS que haga la generación que desee en su Proyecto Wix.

1

Utilizando la sugerencia de Gareth de la caja de herramientas T4, pude cargar una plantilla T4, pero no estaba generando el archivo como se esperaba.

Lo que terminé haciendo fue crear un proyecto de clase C# con mis plantillas, y ejecutar un comando posterior a la compilación para copiar la salida al instalador de WiX. A continuación se muestra un ejemplo de trabajo.

WiX + T4 ejemplo

que aquí hay una rápida y sucia-scripts que camina una estructura de carpetas e incluye todo, pero lo que hay en los archivos excluidos. Es al menos un buen punto de partida para agregar archivos a su proyecto carpeta por carpeta.

GetFiles.ttinclude - métodos de utilidad para caminar estructura de directorios y la lista de archivos

Files.tt mantienen - Generar WiX incluyen

+0

Files.tt cambia el GUID de tu archivo cada vez que se ejecuta el tt. Creo que eso es malo. Querrás que esos identificadores sean consistentes para cada uno archivo a través del tiempo. –

+0

@Ronnie La forma en que usé el código fue para generar los scripts de instalación iniciales y luego administré los archivos manualmente a partir de ese momento. Cada archivo debe tener un guid único, y si se va a actualizar un archivo, querrá para darle al nuevo archivo un nuevo guid y asegurarse de que se elimine el archivo anterior. – Brian

1

Si usted tiene (o puede crear) otro proyecto en la misma solución que hace las plantillas de apoyo T4, hay una manera simple de hacerlo.

  1. crear la plantilla de T4 en alguna parte de ese proyecto
  2. En el proyecto WIX, añadir el archivo de salida as a link (clic derecho en el proyecto, en Agregar elemento existente, añadir al menos Link)
Cuestiones relacionadas