BIML注释标记不匹配

时间:2017-02-21 16:49:26

标签: ssis biml

我正在将表中的架构转储到包的标签注释中。

        <Annotation AnnotationType="Tag" Tag="PackageSchema">
            <#=Table.Schema#>
        </Annotation>

在用于创建主包的BIML中,我正在为每个模式创建一个序列容器,并将包放在相应的容器中。至少那是我要求它做的。

<Package Name="01-Master" ConstraintMode="Linear">
    <Tasks>
        <# foreach (var SchemaNode in RootNode.Schemas) { #>
            <Container Name="SEQC <#=SchemaNode.Name#>" ConstraintMode = "Parallel">
                <Tasks>
                    <# foreach (var Pckg in RootNode.Packages.Where(pkgschema => pkgschema.GetTag("PackageSchema")==SchemaNode.Name)) { #>
                        <ExecutePackage Name="EP <#=Pckg.Name#>" DelayValidation="true">
                            <ExternalProjectPackage Package="<#=Pckg.Name#>.dtsx">
                            </ExternalProjectPackage>
                        </ExecutePackage>
                    <# } #>
                </Tasks>
            </Container>
        <# } #>
    </Tasks>

当它运行时,我得到一个包含空序列容器的Master包。我从包foreach中取出了它的位置,然后生成但是将所有包放在每个容器中。我把GetTag放在包的名称中,以确保它正确地拾取它。

<# foreach (var Pckg in RootNode.Packages) { #>
    <ExecutePackage Name="EP <#=Pckg.Name#>" DelayValidation="true">
        <ExternalProjectPackage Package="<#=Pckg.Name#>.dtsx--<#=Pckg.GetTag("PackageSchema")#>--<#=SchemaNode.Name#>">

标签被放入包装名称中,但它周围有很多空间。

<ExecutePackage Name="EP Application_TransactionTypes" DelayValidation="true">
    <ExternalProjectPackage Package="Application_TransactionTypes.dtsx--                 Application             --Application" />
</ExecutePackage>
<ExecutePackage Name="EP Purchasing_PurchaseOrderLines" DelayValidation="true">
    <ExternalProjectPackage Package="Purchasing_PurchaseOrderLines.dtsx--                 Purchasing             --Application" />
</ExecutePackage>

所以我猜测填充值是RootNode.Packages.Where与模式名称不匹配的原因。我无法弄清楚如何修剪空间。我尝试在不同的地方放置一个trim(),但是BIML引擎抱怨它。我可以通过在BIML中的实际注释前面取出标签来摆脱前导空格,但它仍然填补了结尾。

关于为什么标签被填充的任何想法,或者我可能完全偏离这里并且它不是标签周围的空间。

1 个答案:

答案 0 :(得分:1)

这是Biml / XML格式在背后咬你的丑陋地方之一

    <Annotation AnnotationType="Tag" Tag="PackageSchema">
        <#=Table.Schema#>
    </Annotation>

如果你将这个定义更改为以下内容,那就做了所有事情&#34;神奇地&#34;工作?

    <Annotation AnnotationType="Tag" Tag="PackageSchema"><#=Table.Schema#></Annotation>

我假设是因为我遇到了与包参数类似的问题......