Почему мой шаблон T4 добавляет число к имени файла? - PullRequest
47 голосов
/ 22 декабря 2009

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

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

Ответы [ 2 ]

77 голосов
/ 22 декабря 2009

Это происходит, когда 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 войти в это состояние или как остановить его, делая это ...

39 голосов
/ 10 января 2013

@ ответ itowlson действительно помог мне, но я обнаружил немного более простой обходной путь, которым, я думал, я поделюсь.

Если у вас есть:

Filename.tt
└── Filename1.cs

Просто переименуйте Filename.tt в Filename2.tt:

Filename2.tt
└── Filename2.cs

И снова к Filename.tt снова:

Filename.tt
└── Filename.cs

Вуаля.

...