是否有可能以某种方式在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"/>
一切都很好。由于错误代码映射是以十六进制定义的,所以我更倾向于将它们保留在十六进制中,以供将来的脚本读者使用...
答案 0 :(得分:0)
据我所知,这是不可能的。保持十六进制的唯一方法是将其包装在转换中:
<Warning Text="Assembly loading exception" Condition="$([MSBuild]::BitwiseAnd($([System.Convert]::ToInt32(`0x8`, 16)), $(FxCopExit))) == 0x8"/>
我不确定这是否实际上比仅重写十进制和文档中的数字更好/更具可读性,但这在技术上是正确的,至少......