¿Por qué mi plantilla T4 añade un número al nombre del archivo?


¿Por qué mis plantillas T4 a veces añaden un número al archivo de salida y a veces no? Por ejemplo, en un caso podría tener un archivo de plantilla llamado Foo.tt y obtendré un archivo de salida de Foo.cs. En otros casos, obtendré un archivo de salida de Foo1.cs. En todos los casos, no hay ningún otro Foo.cs archivo que podría estar causando que anexe un número. En otras palabras, definitivamente no es el resultado de ningún conflicto obvio de nombres de archivo.

Soy un desarrollador retentivo profundamente anal, así que Me encantaría saber cómo deshacerme de ese inútil sufijo numérico.

Author: Gregory Higley, 2009-12-22

2 answers

Esto sucede cuando Visual Studio se confunde y decide brevemente que no puede usar Foo.cs como la salida por alguna razón (generalmente alucinatoria), por lo que utilizará Foo1.cs en su lugar, y luego insiste en recordar esta configuración.

La solución es abrir el .csproj archivo en un editor de texto y localizar el Foo.tt entrada. Esto debería tener un subelemento llamado LastGenOutput. Cambia esto de nuevo a Foo.cs, guarde el archivo del proyecto y vuelva a abrirlo en VS.

Y luego s suspiro -- espera a que vuelva a suceder. Puedes ver http://social.msdn.microsoft.com/Forums/en/linqtosql/thread/0c0f77a6-d712-43d2-a990-555df7960123 para más detalles, aunque nadie parece ser capaz de explicar lo que hace que VS entre en este estado o cómo detenerlo...

 73
Author: itowlson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-21 22:36:26

La respuesta de@itowlson realmente me ayudó, pero descubrí una solución un poco más simple que pensé en compartir.

Si usted tiene:

Filename.tt
└── Filename1.cs

Simplemente cambia el nombre de Filename.tt a Filename2.tt:

Filename2.tt
└── Filename2.cs

Y de vuelta a Filename.tt de nuevo:

Filename.tt
└── Filename.cs

Voilà.

 38
Author: RichardTowers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-06 10:22:36