¿Puedo redistribuir el motor Microsoft T4 con mi producto? [cerrado]

StackOverflow https://stackoverflow.com/questions/443027

  •  22-07-2019
  •  | 
  •  

Pregunta

Estoy generando código dinámicamente, actualmente estoy usando String.Format e incrustando marcadores de posición, pero reformatear el código C # para usarlo como plantilla es una molestia, y creo que usar una plantilla T4 sería mejor.

Sin embargo, la generación de código se llevará a cabo en un sistema en ejecución, por lo que necesito saber que puedo redistribuir de forma segura y legal el motor Microsoft T4 con mi producto.

¿Alguien más ha hecho esto? ¿O conoce la respuesta (legal)?

¿Fue útil?

Solución

Parece que pronto habrá otra opción.

Ayer, Miguel de Icaza publicó sobre la integración de T4 en MonoDevelop, por lo que espero que haya un conjunto de herramientas T4 mono equivalente en cualquier momento.

Ver: http://tirania.org/blog/archive/2009/ Mar-10.html

Otros consejos

Puede redistribuir T4 como parte de DSLToolsRedist , sin embargo, requiere que ya esté instalada la edición estándar de Visual Studio 2005 o superior. No creo que T4 pueda redistribuirse legalmente sin Visual Studio en este momento. El escenario que describió será directamente compatible con Visual Studio 2010

Tengo la respuesta y desafortunadamente no es como sugirió Oleg. (Gran trabajo en T4 por cierto Oleg). No puede redistribuir T4 en este momento, es parte de VS. En VS2010 será posible precompilar plantillas T4 y luego redistribuir esas plantillas precompiladas con su aplicación sin dependencia de T4 para ejecutarlas.

Para mayor claridad, la respuesta oficial es que no puede distribuir el motor Microsoft T4 como una pieza separada de Visual Studio.

Sin embargo, a partir de Visual Studio 2010, puede usar y redistribuir plantillas precompiladas, que no dependen de Visual Studio.

También puede usar T4 fuera de Visual Studio en una máquina que tenga instalado Visual Studio.

También puede licenciar y redistribuir el Visual Studio Isolated Shell sin costo, y usarlo como host para sus herramientas, incluye T4.

A partir de Visual Studio 2010 SP1, tiene licencia para copiar T4 a su máquina de compilación a través de la licencia en buildserver.txt en su directorio de instalación de VS.

Tengo mi propio sistema generador de código de plantilla, compilando el código en un dominio de aplicación separado, antes de que saliera VS2008.

Si está interesado, publique un comentario y publicaré una URL en el código.

El código para usar mi motor de plantillas es aquí , puede navegar con un navegador web o señalar un Subversion cliente en eso. Tenga en cuenta que el enlace que comienza aquí realmente se detiene después de la palabra, pero el renderizador de ADM del lado del servidor filtra el enlace al siguiente texto.

Tenga en cuenta que si solo copia el archivo único en ese espacio de nombres, entonces no se compilará solo, requiere algunas cosas en LVK.Delegates y LVK.Scripting, los espacios de nombres suben un par de niveles desde el enlace de arriba. Si no desea aspirar toda la biblioteca, deberá extraer las piezas de las que se queja de una en una hasta que se compile.

También hay una versión binaria de la biblioteca en / LVK_3_5 / trunk / Binaries / Debug / LVK en el mismo repositorio. Si descarga eso, es tan simple como agregarle una referencia y verificar la clase LVK.Text.Templates.TextTemplate .

Lamentablemente, no tengo ningún ejemplo para mi biblioteca en este momento.

Básicamente, para usar una plantilla:

TextTemplate tt = new TextTemplate();
tt.Source = "... code here, check example file above ...";
tt.Compile();
String output = tt.Generate(singleObjectParameter);

Dentro de la plantilla, que es básicamente todo el código que se inserta en un solo método (lo que significa que no es tan bueno como T4 en términos de poder agregar métodos fácilmente, pero puede usar métodos anónimos), tener acceso al objeto de datos que se le pasa como un parámetro llamado datos.

Entonces, para mostrar el contenido del parámetro pasado:

<%= data %>

Para repetirlo:

<% for (Int32 index = 0; index < 10; index++) { %>
<%= data %>
<% } %>

Si tiene preguntas, envíelas a mi correo electrónico a lasse@vkarlsen.no.

Recordé que esto apareció en 2006 (¡antes de saber qué era T4!) y busqué y encontré esto http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/1ab0bf3f-2810-4adf-bf75 -900b98dee8e2 / Lamentablemente, el enlace gotdotnet está roto. Es difícil decir si en ese hilo están de acuerdo en que legalmente puedes alojar T4 fuera de VS y redistribuir, o no.

Es una verdadera lástima, pero como señala Oleg, si no se ha probado, ¿cómo puedes liberarlo?

Lassevk, ciertamente estoy interesado: estaba pensando en volver a compartir un motor de plantillas que construí hace unos 10 años, ¡pero siempre estoy dispuesto a una vida más fácil!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top