2009-12-21 10 views
43

¿Por qué mis plantillas T4 algunas veces agregan un número al archivo de salida y otras 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 archivoFoo.cs que pueda estar causando que añada un número. En otras palabras, definitivamente no es el resultado de ningún conflicto obvio de nombre de archivo.¿Por qué mi plantilla T4 agrega un número al nombre del archivo?

Soy un desarrollador anal profundamente retentivo, por lo que me encantaría saber cómo deshacerse de ese sufijo numérico inútil.

Respuesta

70

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

La solución es abrir el archivo .csproj en un editor de texto y ubicar la entrada Foo.tt. Esto debería tener un subelemento llamado LastGenOutput. Cambie esto a Foo.cs, guarde el archivo de proyecto y vuélvalo a abrir en VS.

Y luego - suspiro - espere a que suceda nuevamente. Puede ver http://social.msdn.microsoft.com/Forums/en/linqtosql/thread/0c0f77a6-d712-43d2-a990-555df7960123 para obtener más detalles, aunque nadie parece ser capaz de explicar qué causa que VS entre en este estado o cómo detenerlo ...

+0

¡Gracias un trillón! Al menos es un comienzo ... –

37

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

Si usted tiene:

Filename.tt 
└── Filename1.cs 

simplemente renombre Filename.tt a Filename2.tt:

Filename2.tt 
└── Filename2.cs 

Y de vuelta a Filename.tt nuevo:

Filename.tt 
└── Filename.cs 

Voilà.

+2

De esta manera es mucho más fácil que la respuesta aceptada – lankyplanks

Cuestiones relacionadas