Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
.net <;#之间有什么区别及<#+;在T4中?_.net_T4 - Fatal编程技术网

.net <;#之间有什么区别及<#+;在T4中?

.net <;#之间有什么区别及<#+;在T4中?,.net,t4,.net,T4,“代码”和“解释”之间的区别是什么 标准控制块 标准控制块是生成部分输出文件的程序代码段 可以在模板文件中混合任意数量的文本块和标准控制块。但是,不能将一个控制块放置在另一个控制块中。每个标准控制块由符号分隔 类特征控制块 类特征控制块定义不应包含在主变换中的属性、方法或任何其他代码。类要素块经常用于辅助功能。通常,类要素块放置在单独的文件中,以便可以由多个文本模板包含它们 类特征控制块由符号分隔 例如,以下模板文件声明并使用方法: <#@ output extension="

“代码”和“解释”之间的区别是什么

标准控制块 标准控制块是生成部分输出文件的程序代码段

可以在模板文件中混合任意数量的文本块和标准控制块。但是,不能将一个控制块放置在另一个控制块中。每个标准控制块由符号
分隔

类特征控制块
类特征控制块定义不应包含在主变换中的属性、方法或任何其他代码。类要素块经常用于辅助功能。通常,类要素块放置在单独的文件中,以便可以由多个文本模板包含它们

类特征控制块由符号分隔

例如,以下模板文件声明并使用方法:

<#@ output extension=".txt" #>
Squares:
<#
    for(int i = 0; i < 4; i++)
    {
#>
    The square of <#= i #> is <#= Square(i+1) #>.
<#
    } 
#>
That is the end of the list.
<#+   // Start of class feature block
private int Square(int i)
{
    return i*i; 
}
#>

正方形:
正方形是。
这就是清单的结尾。

类要素控制块是可以定义辅助方法的块。块由
分隔,它必须显示为文件中的最后一个块

阅读文档并不能立即看出区别所在。它们都是包含在生成的模板中的代码

让它更清楚一点

要查看操作中的差异,请使用以下内容创建运行时文本模板:

<#@ template language="C#" #>
<# // STANDARD CONTROL BLOCK #>
<#+ // CLASS FEATURE BLOCK #>

如您所见,标准控制块放在
TransformText
方法中,而类功能放在类级别。

值得注意的是“文件中的最后一个块”。在特定模板文件中使用块后,不能再在该文件中使用常规块。因此,您的助手/模板成员/嵌套类需要分组在模板文件的末尾,或者更频繁地(为了重用)放在单独的文件中并包括在内。这应该是公认的答案。与MSDN docu相反,这使得实际差异非常明显。谢谢你的信息!该文章的链接已失效。@DrewChapin添加了一个web.archive.org链接。谢谢
public class Something
{
    public string TransformText()
    {
 // STANDARD CONTROL BLOCK 
        return this.GenerationEnvironment.ToString();
    }
 // CLASS FEATURE BLOCK 
}