Почему мой шаблон T4 добавляет число к имени файла?
Почему мои шаблоны T4 иногда добавляют число в выходной файл, а иногда нет? Например, в одном случае у меня может быть файл шаблона под названием Foo.tt
, и я получу выходной файл Foo.cs
. В других случаях я получу выходной файл Foo1.cs
. В каждом случае существует другой Foo.cs
файл, который может привести к добавлению числа. Другими словами, это определенно не результат какого-либо очевидного конфликта имен файлов.
Я глубоко анальный ретенсивный разработчик, поэтому я бы очень хотел знать, как избавиться от этого бесполезного числового суффикса.
Ответы
Ответ 1
Это происходит, когда Visual Studio запутывается и на короткое время решает, что он не может использовать Foo.cs как выход по какой-либо причине (обычно галлюцинаторный), поэтому вместо этого он будет использовать Foo1.cs, а затем настаивает на запоминании этой настройки.
Исправление состоит в том, чтобы открыть файл .csproj в текстовом редакторе и найти запись Foo.tt. У этого должен быть подэлемент, называемый LastGenOutput. Измените это на Foo.cs, сохраните файл проекта и снова откройте его в VS.
А потом - вздох - дождитесь, пока это случится снова. Вы можете увидеть http://social.msdn.microsoft.com/Forums/en/linqtosql/thread/0c0f77a6-d712-43d2-a990-555df7960123 для получения более подробной информации, хотя никто, кажется, не в состоянии объяснить, почему VS переходит в это состояние или как его остановить делая это...
Ответ 2
Ответ на @itowlson действительно помог мне, но я обнаружил несколько более простой обходной путь, который, как я думал, я бы разделил.
Если у вас есть:
Filename.tt
└── Filename1.cs
Просто переименуйте Filename.tt
в Filename2.tt
:
Filename2.tt
└── Filename2.cs
И снова вернитесь к Filename.tt
:
Filename.tt
└── Filename.cs
Вуаля.