生成XML的Visual Studio 2012 T4模板会出错

时间:2012-09-04 08:06:50

标签: xml visual-studio-2012 t4

我正在使用visual studio 2012从T4模板生成XML。模板的顶部看起来像

<#@ template language="VBv4" hostspecific="True" debug="True" #>
<#@ output extension="wmef" #>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>

T4模板正确生成XML。这没问题。然而,visual studio变得混乱,它还试图将模板本身作为XML处理并报告构建错误,说XML形成错误,当然这是因为它是XML的模板,而不是实际的XML。

当我第一次编辑.tt文件时,一切正常。但是,一旦生成了XML文件并将其加载到编辑器中以查看它,然后突然返回到.tt文件,.tt文件的语法突出显示为XML,然后出现构建错误。

Perhapps这只是m $ oft

的错误

关于这里可能发生什么的任何想法?

2 个答案:

答案 0 :(得分:9)

这是VS中的一个错误。您可以通过在.tt文件中替换行

来解决此问题
<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<# WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>"); #>

一旦VS对模板文件的XML格式感到困惑,它似乎就会持续存在这种混乱 - 即使在完成上述编辑和重新启动之后也是如此。唯一的解决方法似乎是从项目中删除现有的.tt文件并从头开始重新创建。

通过此更改,.tt文件不再具有<?xml?>标记,因此VS不会将其视为XML文件。它会忽略文字字符串中的所有内容。

这似乎与T4 Template containing XML results in parse errors的问题相同,但OP的解决方法从未被确认或接受,这就是我在此重新发布的原因。

答案 1 :(得分:2)

作为Reinier回答的后续行动......

我发现删除并重新创建文件有效,但没有必要从项目中排除该文件。

我发现最快/最简单的方法是:

  1. 关闭文件。
  2. 仅使用Windows资源管理器删除T4文件。这样.proj文件不会受到影响。
  3. 通过从源代码管理中获取最新信息再次将它们带回来。