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

bra*_*ing 7 xml t4 visual-studio-2012

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

<#@ template language="VBv4" hostspecific="True" debug="True" #>
<#@ output extension="wmef" #>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
Run Code Online (Sandbox Code Playgroud)

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

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

Perhapps这只是一个m $ oft的错误

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

Rei*_*eek 9

这是VS中的一个错误.您可以通过在.tt文件中替换该行来解决它

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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