Syntax 这看起来像是T4引擎的错误,还是我做错了什么 我有一个T4模板,它生成C++代码,我需要动态地指定一个包含文件。p>

Syntax 这看起来像是T4引擎的错误,还是我做错了什么 我有一个T4模板,它生成C++代码,我需要动态地指定一个包含文件。p>,syntax,t4,Syntax,T4,为了说明错误,我删除了代码中的所有逻辑 以下内容将不会编译。 错误2在块中发现意外的开始或结束标记。确保没有键入错误的开始或结束标记 void foo() { string bob = ""; #> #include "..\..\SomeDir\<#=bob #>" <#+ } #> void foo() { 字符串bob=“”; #> #包括“.\..\SomeDir\” 如果在#include行中添加空格,则可以解决问题 void foo

为了说明错误,我删除了代码中的所有逻辑

以下内容将不会编译。 错误2在块中发现意外的开始或结束标记。确保没有键入错误的开始或结束标记

void foo()
{
    string bob = "";
#>
    #include "..\..\SomeDir\<#=bob #>"
<#+ 
}
#>
void foo()
{
字符串bob=“”;
#>
#包括“.\..\SomeDir\”
如果在#include行中添加空格,则可以解决问题

void foo()
{
    string bob = "";
#>
    #include "..\..\SomeDir\ <#=bob #>"
<#+ 
}
#>
void foo()
{
字符串bob=“”;
#>
#包括“.\..\SomeDir\”

这是一个错误还是我缺少一些语法来处理\后跟一个

反斜杠正在转义表达式块的打开标记,因此您需要用另一个反斜杠转义反斜杠本身

 #include "..\..\SomeDir\\<#=bob #>"
包括“.\..\SomeDir\”

应该这样做。

反斜杠正在转义表达式块的打开标记,因此您需要用另一个反斜杠转义反斜杠本身

 #include "..\..\SomeDir\\<#=bob #>"
包括“.\..\SomeDir\”

应该可以做到。

正如GarethJ所提到的,双齿隙应该可以工作。我在VS2010 SP1中尝试了以下T4模板,它似乎可以按预期工作

<#@ output extension=".hpp" #>
<#
    foo ();
#>
// Test
<#+
void foo ()
{
    var bob = "XYZ";
#>
#include "..\\<#=bob#>.h
<#+
    }
#>

//试验
#包括“.\\.h”

在这个特殊的解决方法中,可以在路径中使用前斜杠(即“/”)而不是后斜杠(即“\”)

,正如GarethJ提到的那样,双反冲应该可以工作。我在VS2010 SP1中尝试了以下T4模板,它似乎可以按预期工作

<#@ output extension=".hpp" #>
<#
    foo ();
#>
// Test
<#+
void foo ()
{
    var bob = "XYZ";
#>
#include "..\\<#=bob#>.h
<#+
    }
#>

//试验
#包括“.\\.h”

在这种情况下,一种解决方法是在路径中使用前斜杠(即“/”)而不是后斜杠(即“\”)

您使用的是哪个版本的VS?-我在发布之前在2010 SP1上试用过,它正在该版本上工作。您使用的是哪个版本的VS?-我在发布之前在2010 SP1上试用过,它正在该版本上工作。