我將表中的模式轉儲到包的標記註釋中。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>
當它運行時,我得到一個空白序列容器的主包。我從軟件包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中的實際註釋之前取出選項卡來擺脫領先空間,但它仍然填補了結尾。
任何想法,爲什麼標籤得到填充,或者我完全偏離這裏的基地,它不是標籤周圍的空間。
感謝您的幫助比爾! – CoBikeJunkie