2012-05-24 9 views
8

Estoy intentando configurar un proceso donde las plantillas de T4 se transformarán en el servidor de compilación (Visual Studio no está instalado allí).Ejecutando TextTransform.exe (T4) en un servidor de compilación

He leído todas las referencias en línea, pero no he podido obtener una fuente clara que muestre cómo hacerlo.

Específicamente, aquí está el 2 números que he encontrado:

  • TextTransform.exe lanza un error acerca de DLL que falta:

C: \ TeamCity \ buildAgent \ trabajo \ AppSettings. CS0006 de error:: tt (0,0) transformación Compilación: archivo de metadatos 'Microsoft.VisualStudio.TextTemplating.Interfaces.10.0, versión = 10.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' No se pudo encontrar

El registro de los archivos DLL utilizando gacutil corrige este problema, aunque me gustaría evitar este paso.

  • Utilizando el Host.ResolvePath (cadena) método no devuelve ningún valor cuando se ejecute fuera de Visual Studio.

Este método ayuda a determinar una ruta completa al archivo .txt que utiliza la plantilla como fuente de datos. Sin él, este archivo no se puede encontrar en el servidor de compilación.

Cualquier ayuda será apreciada para que funcione.

EDIT: abrió un problema MS CONNECT: https://connect.microsoft.com/VisualStudio/feedback/details/744137/texttransform-exe-does-not-work-without-vs2010-installed

referencias que he verificado:

+0

Voy a plantear un problema en MS Connect ya que su artículo en MSDN (último elemento en las referencias que publiqué) parece obsoleto y no funciona correctamente. –

+0

¿Algún progreso en esto? Aún obtenemos la excepción exacta en un servidor sin VS instalado aunque todos los ensamblajes de TextTransform están en GAC. –

+0

Debe instalar los ensamblajes en GAC. Tuve el mismo problema. – Augi

Respuesta

2

Creo que el problema es que está utilizando características específicas del host tales como ResolvePath.

Una forma de intentarlo es asegurarme de que las plantillas no usen ResolvePath sino que dependan de rutas relativas desde una ubicación conocida.

Este lugar bien conocido podría ser conocido por:

1. Convention 
2. Environment variable 
3. Registry 
4. SQL Server 
5. Web Service 
6. And others 

Si no te gusta la idea de obligar a desarrolladores variables de entorno de configuración que consideraría hacer una resolvePath "inteligente" que utiliza la variable de entorno si disponible, de lo contrario se basa en Host.ResolvePath.

Esperanza esto ayuda

+0

Para mi escenario simple, bastaría con poder resolver la ruta completa de la plantilla (archivo .tt). El archivo de entrada generalmente se colocará al lado de él, o debajo de una ruta relativa a él. –

1

zanja el Microsoft TextTransform.exe y use el gratuito que se envía con MonoDevelop que no tiene dependencias externas.

Ver aquí: T4 without Visual Studio?

0
  1. Copia el siguiente directorio de su equipo de desarrollo para la construcción de servidor.

    Fuente (la máquina):

    %CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0

    destino (construcción de servidor):

    %CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0

    Dónde <version> es la versión más reciente.

  2. Copie todos los ensamblados (.dll) de su máquina de desarrollo al servidor de compilación.

    Fuente (la máquina): %WinDir%\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating.*

    destino (construcción de servidor):

    %CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\<version>.0

    Dónde * es el resto del nombre del directorio.

  3. Usando Gacutil /i instale todos los ensamblados copiados en GAC del servidor de compilación.

Cuestiones relacionadas