T4模板包含解析错误XML结果(T4 Template containing XML results

2019-09-18 23:10发布

我创建T4模板我的Web和Windows项目的配置文件。 我可以成功地生成主web.config中,所有的configs用于其他环境,即web.ci.config,etc..However,我无法摆脱对我的主人TT文件,如错误的:

  • 字符“#”,十六进制值0x23是XML名称是非法的。
  • 字符“<”,十六进制值是为0x3C在XML属性值是非法的。
  • 意外的XML声明。 XML声明必须是文件中的第一个节点,没有空格字符被允许在它之前出现。

我应该缺少一个XML架构或引用,但什么?


我的文件是这样的:

<#@ template debug="true" hostSpecific="true" #>
<#@ output extension= ".config" #>  
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...  
    <add key="FileUploadFolder" value="<#= this.FileUpload #>" /> 
...
</configuration>
<#+ 
   string FileUpload="\\\\server\\folder";
#>

这里是截图

Answer 1:

这里同样的问题。 我工作围绕它通过在更换.tt文件中的行

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

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

一旦VS是困惑的模板文件的XML格式,它似乎在混乱持续下去 - 即使在编辑类似上面和重新启动后。 周围的唯一方法似乎是删除现有.tt从您的项目文件,并从头开始重新创建它。

随着这一变化, .tt文件没有一个<?xml?>标签了,所以VS不会认为这是一个XML文件。 它忽略了文字字符串内的一切。 你的整个模板现在看起来是这样的:

<#@ template debug="true" hostSpecific="true" #>
<#@ output extension= ".config" #>  
<# WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); #>
<configuration>
...  
    <add key="FileUploadFolder" value="<#= this.FileUpload #>" /> 
...
</configuration>
<#+ 
    string FileUpload="\\\\server\\folder";
#>


Answer 2:

这里发生的事情是,在VS XML语言服务标识错误的T4文件作为一个XML文件,所以大量喷涌假阳性的错误消息。

我期待到是否有一个变通方法,以迫使它忽略T4文件。 如果你可以登录错误Microsoft连接 ,那将是有益的。



文章来源: T4 Template containing XML results in parse errors