【问题标题】:Visual Studio 2012 T4 templates generating XML gives error生成 XML 的 Visual Studio 2012 T4 模板给出错误
【发布时间】:2012-09-04 08:06:49
【问题描述】:

我正在使用 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 的一个错误

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

【问题讨论】:

  • 可能是选择将 .TT 文件视为 XML 的自动编辑器选择。尝试“打开方式...”并选择源代码编辑器,将其设置为默认值并关闭模板。双击以在源代码编辑器中打开模板。
  • Visual Studio 2012 没有“打开方式”选项
  • 在解决方案资源管理器中,在 VS 2012 中:右键单击 TT 文件。在 Open 下有一个“Open With...”选项。
  • 在我将其设置为默认使用源代码编辑器后,我不再遇到任何问题,因为它切换回 xml 视图。

标签: xml visual-studio-2012 t4


【解决方案1】:

这是 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 文件不再具有 &lt;?xml?&gt; 标记,因此 VS 不会将其视为 XML 文件。它会忽略文字字符串中的所有内容。

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

【讨论】:

  • 我明天去看看。我实际上尝试过,但它失败了,但我想我并没有付出额外的努力来删除文件并将其重新引入项目中。 VS 似乎有点太聪明了,无法根据内容猜测文件类型而没有手动覆盖。
  • 好的——对我来说效果很好。如果它不能解决您的问题,请告诉我,以便我们找出任何差异。
【解决方案2】:

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

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

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

  1. 关闭文件。
  2. 使用 Windows 资源管理器仅删除 T4 文件。这样 .proj 文件不受影响。
  3. 从您的源代码管理中获取最新版本,让它们再次回归。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多