Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual Studio 2012 T4模板生成XML时出错_Xml_Visual Studio 2012_T4 - Fatal编程技术网

Visual Studio 2012 T4模板生成XML时出错

Visual Studio 2012 T4模板生成XML时出错,xml,visual-studio-2012,t4,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。这没问题。然而,VisualStudio

我正在使用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。这没问题。然而,VisualStudio感到困惑,它还试图将模板本身作为XML处理,并报告生成错误,称XML格式不正确,这当然是因为它是XML的模板,而不是实际的XML

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

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


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

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

<?xml version="1.0" encoding="utf-8" standalone="yes"?>


一旦VS对模板文件的XML格式感到困惑,它似乎会一直保持这种困惑——即使在像上面那样编辑并重新启动之后也是如此。唯一的解决办法似乎是从项目中删除现有的
.tt
文件,然后从头开始重新创建它

使用此更改,<代码> TT文件不再有<代码> <代码>标签,所以VS不认为它是XML文件。它忽略文本字符串中的所有内容


这似乎是与相同的问题,但OP从未确认或接受该解决方案,这就是我将其重新发布在此处的原因。

作为Reinier回答的后续

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

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

  • 关闭文件
  • 使用Windows资源管理器仅删除T4文件。这样就不会影响.proj文件
  • 通过从源代码管理获取最新信息,将它们重新带回来

  • 可能是选择将.TT文件作为XML处理的自动编辑器选择。尝试“用…打开”,然后选择源代码编辑器,将其设置为默认值并关闭模板。双击以在源代码编辑器中打开模板。visual studio 2012没有“打开方式”选项,即使我将扩展名为“tt”的文件的编辑器设置为在某个时候使用源编辑器,visual studio仍然“猜测”它是一个XML文件并切换到XML编辑器。在解决方案资源管理器中,VS 2012内部:右键单击TT文件。在Open下有一个“Open With…”选项。在我将其设置为默认使用源代码编辑器后,我再也不会因为它切换回xml视图而遇到任何问题。我明天会检查这个选项。我确实尝试过这个方法,但失败了,但我想我并没有多花一点力气删除文件并将其重新引入到项目中。在没有手动覆盖的情况下,基于内容猜测文件类型似乎有点太聪明了。如果它不能解决您的问题,请告诉我,以便我们可以追踪任何差异。
    <# WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>"); #>