8

我正在使用 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,然后出现构建错误。

也许这只是 m$oft 的一个错误

关于这里可能发生的事情有什么想法吗?

4

2 回答 2

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 文件。它忽略文字字符串中的所有内容。

这似乎与包含 XML 的 T4 模板导致解析错误的问题相同,但该解决方法从未被 OP 确认或接受,这就是我在此处重新发布它的原因。

于 2012-09-09T01:07:29.250 回答
3

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

我发现删除和重新创建文件是可行的,但没有必要从项目中排除文件。

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

  1. 关闭文件。
  2. 使用 Windows 资源管理器仅删除 T4 文件。这样 .proj 文件不受影响。
  3. 通过从源代码管理中获取最新信息,再次将它们带回来。
于 2013-03-19T10:20:00.143 回答