为什么我的T4模板附加一个数字的文件名?

为什么我的T4模板有时会在输出文件中附加一个数字,有时候不是? 例如,在一种情况下,我可能有一个名为Foo.tt的模板文件,我将得到一个Foo.cs的输出文件。 在其他情况下,我会得到一个Foo1.cs的输出文件。 在任何情况下,都没有其他 Foo.cs文件可能导致它附加一个数字。 换句话说,这绝对不是任何明显的文件名冲突的结果。

我是一个深刻的肛门保留的开发者,所以我一定会喜欢知道如何摆脱那个无用的数字后缀。

发生这种情况时,Visual Studio自己感到困惑,并简要地决定,由于某种原因(通常是幻觉),它不能使用Foo.cs作为输出,所以它会使用Foo1.cs, 然后坚持记住这个设置

解决方法是在文本编辑器中打开.csproj文件并findFoo.tt条目。 这应该有一个名为LastGenOutput的子元素。 将其更改回Foo.cs,保存项目文件,然后在VS中重新打开它。

然后 – 叹 – 等待它再次发生。 你可以看到http://social.msdn.microsoft.com/Forums/en/linqtosql/thread/0c0f77a6-d712-43d2-a990-555df7960123了解更多细节,但似乎没有人能够解释什么原因VS进入这个状态或如何阻止它这样做;…

@ itowlson的回答确实帮了我的忙,但是我发现了一个稍微简单一些的解决办法,我想我会分享一下。

如果你有:

 Filename.tt └── Filename1.cs 

只需将Filename.tt重命名为Filename2.tt

 Filename2.tt └── Filename2.cs 

再回到Filename.tt

 Filename.tt └── Filename.cs 

瞧。