Pourquoi mon modèle T4 ajoute-t-il un numéro au nom du fichier?

Pourquoi mes modèles T4 ajoutent-ils parfois un numéro au fichier de sortie et parfois pas? Par exemple, dans un cas, je pourrais avoir un fichier modèle appelé Foo.tt et je vais obtenir un fichier de sortie de Foo.cs Dans d’autres cas, je vais obtenir un fichier de sortie de Foo1.cs Dans tous les cas, il n’y a pas d’autre fichier Foo.cs susceptible de provoquer l’ajout d’un numéro. En d’autres termes, ce n’est certainement pas le résultat d’un conflit de nom de fichier évident.

Je suis un développeur très persévérant, donc j’aimerais savoir comment se débarrasser de ce suffixe numérique inutile.

Cela se produit lorsque Visual Studio devient confus et décide brièvement qu’il ne peut pas utiliser Foo.cs en tant que sortie pour une raison quelconque (généralement hallucinatoire), il utilisera donc Foo1.cs à la place, puis insiste pour se souvenir de ce paramètre .

Le correctif consiste à ouvrir le fichier .csproj dans un éditeur de texte et à localiser l’entrée Foo.tt. Cela devrait avoir un sous-élément appelé LastGenOutput. Revenez à Foo.cs, enregistrez le fichier de projet et rouvrez-le dans VS.

Et puis – soupir – attendez que cela se reproduise. Vous pouvez voir http://social.msdn.microsoft.com/Forums/en/linqtosql/thread/0c0f77a6-d712-43d2-a990-555df7960123 pour plus de détails, mais personne ne semble être en mesure d’expliquer ce qui pousse VS cet état ou comment l’arrêter …

La réponse de @ itowlson m’a vraiment aidé, mais j’ai découvert une solution un peu plus simple que je pensais partager.

Si tu as:

 Filename.tt └── Filename1.cs 

Renommez simplement Filename.tt en Filename2.tt :

 Filename2.tt └── Filename2.cs 

Et retour à Filename.tt nouveau:

 Filename.tt └── Filename.cs 

Voilà.