预期在 biml 中使用 c#
} expected using c# in biml
我在 visual studio 中编写 biml,在使用 c# 时遇到问题。
我收到一条错误消息,指出“} expected”指向 if 语句的右括号,但我找不到遗漏的地方。
我是新手,知道可能还有其他错误:)
<#foreach(var order in metaData.Attributes.Select(x => x.ORDER).Distinct()){#>
<Container Name="Sequence Container_<#=order#>">
<PrecedenceConstraints>
<#if (order == "0"){#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#}#>
<#else{#>
<#int previousOrder = Int32.Parse(order) - 1;#>
<Inputs>
<Input OutputPathName="Sequence Container_<#previousOrder#>"/>
</Inputs>
<#}#>
</PrecedenceConstraints>
<Tasks>
<#foreach(var item in metaData.Attributes.Where(y => y.ORDER == order).Select(x => x.ORIGINAL_OBJECT).Distinct()){#>
<ExecutePackage Name="DWH_<#=item#>">
<ExternalProjectPackage Package="DWH_<#=item#>.dtsx" />
</ExecutePackage>
<#}#>
</Tasks>
</Container>
<#}#>
第一个语法错误(未报告)
<Input OutputPathName="Sequence Container_<#previousOrder#>"/>
你在这里漏掉了一个分号,或者你打算在这里使用 <#=
<Input OutputPathName="Sequence Container_<#=previousOrder#>"/>
报告的错误很奇怪,虽然我没有完全清醒,但我看不出根本原因是什么。
我的方法是将您的代码格式化为我的大脑对大括号放置的期望。
这段代码还有不匹配的错误{
<#
// TODO: definition of metaData
// Needs to have ORDER and ORIGINAL_OBJECT attributes and be LINQable
#>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="SO_70679838">
<Tasks>
<#
foreach(var order in metaData.Attributes.Select(x => x.ORDER).Distinct())
{
#>
<Container Name="Sequence Container_<#=order#>">
<PrecedenceConstraints>
<#
if (order == "0")
{
#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#
}
#>
<#
else{
#>
<#int previousOrder = Int32.Parse(order) - 1;#>
<Inputs>
<Input OutputPathName="Sequence Container_<#=previousOrder#>"/>
</Inputs>
<#}#>
</PrecedenceConstraints>
<Tasks>
<#foreach(var item in metaData.Attributes.Where(y => y.ORDER == order).Select(x => x.ORIGINAL_OBJECT).Distinct()){#>
<ExecutePackage Name="DWH_<#=item#>">
<ExternalProjectPackage Package="DWH_<#=item#>.dtsx" />
</ExecutePackage>
<#}#>
</Tasks>
</Container>
<#}#>
</Tasks>
</Package>
</Packages>
</Biml>
这个,不会
<#
// TODO: definition of metaData
// Needs to have ORDER and ORIGINAL_OBJECT attributes and be LINQable
#>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="SO_70679838">
<Tasks>
<#
foreach(var order in metaData.Attributes.Select(x => x.ORDER).Distinct())
{
#>
<Container Name="Sequence Container_<#=order#>">
<PrecedenceConstraints>
<#
if (order == "0")
{
#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#
}
#>
<#
else{
#>
<#int previousOrder = Int32.Parse(order) - 1;#>
<Inputs>
<Input OutputPathName="Sequence Container_<#=previousOrder#>"/>
</Inputs>
<#}#>
</PrecedenceConstraints>
<Tasks>
<#foreach(var item in metaData.Attributes.Where(y => y.ORDER == order).Select(x => x.ORIGINAL_OBJECT).Distinct()){#>
<ExecutePackage Name="DWH_<#=item#>">
<ExternalProjectPackage Package="DWH_<#=item#>.dtsx" />
</ExecutePackage>
<#}#>
</Tasks>
</Container>
<#}#>
</Tasks>
</Package>
</Packages>
</Biml>
我所做的只是删除 else 子句中指令前面的前导 space。
回到你原来的版本,同样的事情。所以,第 17 行的 某些东西 让事情变得一团糟,但由于我没有最小的工作复制,我不能肯定地说你错了什么。
<#
// TODO: definition of metaData
// Needs to have ORDER and ORIGINAL_OBJECT attributes and be LINQable
#>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="SO_70679838">
<Tasks>
<#foreach(var order in metaData.Attributes.Select(x => x.ORDER).Distinct()){#>
<Container Name="Sequence Container_<#=order#>">
<PrecedenceConstraints>
<#if (order == "0"){#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#}#>
<#else{#>
<#int previousOrder = Int32.Parse(order) - 1;#>
<Inputs>
<Input OutputPathName="Sequence Container_<#=previousOrder#>"/>
</Inputs>
<#}#>
</PrecedenceConstraints>
<Tasks>
<#foreach(var item in metaData.Attributes.Where(y => y.ORDER == order).Select(x => x.ORIGINAL_OBJECT).Distinct()){#>
<ExecutePackage Name="DWH_<#=item#>">
<ExternalProjectPackage Package="DWH_<#=item#>.dtsx" />
</ExecutePackage>
<#}#>
</Tasks>
</Container>
<#}#>
</Tasks>
</Package>
</Packages>
</Biml>
您也可以通过以下方法使错误消失,但仍然只是用绷带包扎猎枪伤口
<#if (order == "0"){#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#}else{#>
这不是 python 或 FORTRAN,所以白人 space 不应该是罪魁祸首,但是,我们到了
我在 visual studio 中编写 biml,在使用 c# 时遇到问题。 我收到一条错误消息,指出“} expected”指向 if 语句的右括号,但我找不到遗漏的地方。 我是新手,知道可能还有其他错误:)
<#foreach(var order in metaData.Attributes.Select(x => x.ORDER).Distinct()){#>
<Container Name="Sequence Container_<#=order#>">
<PrecedenceConstraints>
<#if (order == "0"){#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#}#>
<#else{#>
<#int previousOrder = Int32.Parse(order) - 1;#>
<Inputs>
<Input OutputPathName="Sequence Container_<#previousOrder#>"/>
</Inputs>
<#}#>
</PrecedenceConstraints>
<Tasks>
<#foreach(var item in metaData.Attributes.Where(y => y.ORDER == order).Select(x => x.ORIGINAL_OBJECT).Distinct()){#>
<ExecutePackage Name="DWH_<#=item#>">
<ExternalProjectPackage Package="DWH_<#=item#>.dtsx" />
</ExecutePackage>
<#}#>
</Tasks>
</Container>
<#}#>
第一个语法错误(未报告)
<Input OutputPathName="Sequence Container_<#previousOrder#>"/>
你在这里漏掉了一个分号,或者你打算在这里使用 <#=
<Input OutputPathName="Sequence Container_<#=previousOrder#>"/>
报告的错误很奇怪,虽然我没有完全清醒,但我看不出根本原因是什么。
我的方法是将您的代码格式化为我的大脑对大括号放置的期望。
这段代码还有不匹配的错误{
<#
// TODO: definition of metaData
// Needs to have ORDER and ORIGINAL_OBJECT attributes and be LINQable
#>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="SO_70679838">
<Tasks>
<#
foreach(var order in metaData.Attributes.Select(x => x.ORDER).Distinct())
{
#>
<Container Name="Sequence Container_<#=order#>">
<PrecedenceConstraints>
<#
if (order == "0")
{
#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#
}
#>
<#
else{
#>
<#int previousOrder = Int32.Parse(order) - 1;#>
<Inputs>
<Input OutputPathName="Sequence Container_<#=previousOrder#>"/>
</Inputs>
<#}#>
</PrecedenceConstraints>
<Tasks>
<#foreach(var item in metaData.Attributes.Where(y => y.ORDER == order).Select(x => x.ORIGINAL_OBJECT).Distinct()){#>
<ExecutePackage Name="DWH_<#=item#>">
<ExternalProjectPackage Package="DWH_<#=item#>.dtsx" />
</ExecutePackage>
<#}#>
</Tasks>
</Container>
<#}#>
</Tasks>
</Package>
</Packages>
</Biml>
这个,不会
<#
// TODO: definition of metaData
// Needs to have ORDER and ORIGINAL_OBJECT attributes and be LINQable
#>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="SO_70679838">
<Tasks>
<#
foreach(var order in metaData.Attributes.Select(x => x.ORDER).Distinct())
{
#>
<Container Name="Sequence Container_<#=order#>">
<PrecedenceConstraints>
<#
if (order == "0")
{
#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#
}
#>
<#
else{
#>
<#int previousOrder = Int32.Parse(order) - 1;#>
<Inputs>
<Input OutputPathName="Sequence Container_<#=previousOrder#>"/>
</Inputs>
<#}#>
</PrecedenceConstraints>
<Tasks>
<#foreach(var item in metaData.Attributes.Where(y => y.ORDER == order).Select(x => x.ORIGINAL_OBJECT).Distinct()){#>
<ExecutePackage Name="DWH_<#=item#>">
<ExternalProjectPackage Package="DWH_<#=item#>.dtsx" />
</ExecutePackage>
<#}#>
</Tasks>
</Container>
<#}#>
</Tasks>
</Package>
</Packages>
</Biml>
我所做的只是删除 else 子句中指令前面的前导 space。
回到你原来的版本,同样的事情。所以,第 17 行的 某些东西 让事情变得一团糟,但由于我没有最小的工作复制,我不能肯定地说你错了什么。
<#
// TODO: definition of metaData
// Needs to have ORDER and ORIGINAL_OBJECT attributes and be LINQable
#>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="SO_70679838">
<Tasks>
<#foreach(var order in metaData.Attributes.Select(x => x.ORDER).Distinct()){#>
<Container Name="Sequence Container_<#=order#>">
<PrecedenceConstraints>
<#if (order == "0"){#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#}#>
<#else{#>
<#int previousOrder = Int32.Parse(order) - 1;#>
<Inputs>
<Input OutputPathName="Sequence Container_<#=previousOrder#>"/>
</Inputs>
<#}#>
</PrecedenceConstraints>
<Tasks>
<#foreach(var item in metaData.Attributes.Where(y => y.ORDER == order).Select(x => x.ORIGINAL_OBJECT).Distinct()){#>
<ExecutePackage Name="DWH_<#=item#>">
<ExternalProjectPackage Package="DWH_<#=item#>.dtsx" />
</ExecutePackage>
<#}#>
</Tasks>
</Container>
<#}#>
</Tasks>
</Package>
</Packages>
</Biml>
您也可以通过以下方法使错误消失,但仍然只是用绷带包扎猎枪伤口
<#if (order == "0"){#>
<Inputs>
<Input OutputPathName="Set IDRunMaster.Output"/>
</Inputs>
<#}else{#>
这不是 python 或 FORTRAN,所以白人 space 不应该是罪魁祸首,但是,我们到了