我正在尝试读取bimlscript中的project.params参数。我已经尽力告诉我正确的语法<# var env = @[$Project::Environment]#>
,但是我不断收到错误消息“逐字指定符后应输入关键字,标识符或字符串:@”
有人可以启发我正确的方法吗?非常感谢。
答案 0 :(得分:1)
给出Biml的示例软件包
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="so_59375738" >
<Parameters>
<Parameter Name="Environment" DataType="Int32">1</Parameter>
</Parameters>
</Package>
</Packages>
</Biml>
我们需要做的是访问包的Parameters集合以获取我们的Parameter,然后可以从其中使用.Value
属性来获取初始化值。
要注意的另一件事是,我们必须在此处使用分层,因为在创建包的同一层中访问RootNode无效。对于技术娴熟的人来说,这里不需要显式层,因为上面的示例是静态Biml,它始终是Tier 0,而动态Biml又名BimlScript将默认为Tier1。但是,我倾向于我的意图是明确的
<#@ template tier="999" #>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<#
foreach(AstPackageNode p in this.RootNode.Packages)
{
foreach(var pm in p.Parameters)
{
WriteLine(string.Format("<!-- {0}:{1}->{2} -->", p.Name, pm.Name, pm.Value));
}
}
// Explicit approach
WriteLine(string.Format("<!-- {0}:{1}->{2} -->", this.RootNode.Packages["so_59375738"], this.RootNode.Packages["so_59375738"].Parameters["Environment"].Name, this.RootNode.Packages["so_59375738"].Parameters["Environment"].Value));
#>
</Biml>
大概,当构建包(so_59375738)时,我们知道参数Environment
是从元数据存储库中初始化的,因此在我看来,回到存储库并进行访问会更清洁从那里的价值。
除非这是要识别,记录和返工现有产品的工作,否则,显然,您将无权访问原始元存储。