静态方法调用中的十六进制数

时间:2014-12-11 16:33:15

标签: msbuild

是否有可能以某种方式在MSBuild中的静态方法调用中使用十六进制数字?我尝试了一些不同的版本,但我收到了这个错误:

  

错误MSB4186:无效的静态方法调用语法:   " [MSBuild] :: BitwiseAnd(0x1,$(FxCopExit))"。输入字符串不在   格式正确。静态方法调用应采用以下形式:   $([FullTypeName] :: Method()),例如$([System.IO.Path] ::结合(' a',' b'))。

我试图这样做:

<Warning Text="Assembly loading exception" Condition="$([MSBuild]::BitwiseAnd(0x8, $(FxCopExit))) == 0x8"/>

值得注意的是,条件右侧的0x8是可以接受的,所以如果我改为

<Warning Text="Assembly loading exception" Condition="$([MSBuild]::BitwiseAnd(8, $(FxCopExit))) == 0x8"/>

一切都很好。由于错误代码映射是以十六进制定义的,所以我更倾向于将它们保留在十六进制中,以供将来的脚本读者使用...

1 个答案:

答案 0 :(得分:0)

据我所知,这是不可能的。保持十六进制的唯一方法是将其包装在转换中:

<Warning Text="Assembly loading exception" Condition="$([MSBuild]::BitwiseAnd($([System.Convert]::ToInt32(`0x8`, 16)), $(FxCopExit))) == 0x8"/>

我不确定这是否实际上比仅重写十进制和文档中的数字更好/更具可读性,但这在技术上是正确的,至少......