Подтвердить что ты не робот

Почему мой шаблон T4 добавляет число к имени файла?

Почему мои шаблоны T4 иногда добавляют число в выходной файл, а иногда нет? Например, в одном случае у меня может быть файл шаблона под названием Foo.tt, и я получу выходной файл Foo.cs. В других случаях я получу выходной файл Foo1.cs. В каждом случае существует другой Foo.cs файл, который может привести к добавлению числа. Другими словами, это определенно не результат какого-либо очевидного конфликта имен файлов.

Я глубоко анальный ретенсивный разработчик, поэтому я бы очень хотел знать, как избавиться от этого бесполезного числового суффикса.

4b9b3361

Ответ 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

Вуаля.