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

Gre*_*ley 47 t4 visual-studio

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

我是一个深度肛门保持开发者,所以我很想知道如何摆脱那个无用的数字后缀.

ito*_*son 77

当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进入的原因这种状态或如何阻止它这样做......


Ric*_*ers 39

@ itowlson的答案真的帮助了我,但我发现了一个稍微简单的解决方法,我认为我会分享.

如果你有:

Filename.tt
??? Filename1.cs
Run Code Online (Sandbox Code Playgroud)

只需重命名Filename.ttFilename2.tt:

Filename2.tt
??? Filename2.cs
Run Code Online (Sandbox Code Playgroud)

Filename.tt再次回复:

Filename.tt
??? Filename.cs
Run Code Online (Sandbox Code Playgroud)

瞧.

  • 这种方式比接受的答案容易得多 (2认同)