我有一个使用 XML 文字来配置用户界面导航栏的 vb.net 项目。代码看起来像这样,并且已经工作了很多年。
Private ReadOnly _actionTreeXml As XElement =
<nodes>
<node key="any" name="Top">
<node key="log" name="***LOGIN***" type="everybody"></node>
<node key="op" name="Home" ctrl="uiHomePage" type="mfg"></node>
<node key="barcode" name="Barcode Entry" ctrl="EditMfgEntry" type="mfg"></node>
<node key="wip" name="Work in Progress" ctrl="QueryWIP" type="mfg"></node>
<node key="readme" name="Version Info" type="everybody"></node>
</node>
</nodes>
我最近需要有两个略有不同的项目构建(不想为许多用户支付库代码)。所以我有一个构建,其中我#if 了与条形码相关的所有 ui 工具。这在任何地方都很好用,除了像这样的 XML 文字
#if USE_BAR_CODE=1
<node key="barcode" name="Barcode Entry" ctrl="EditMfgEntry" type="mfg"> </node>
#end if
如果我将 USE_BAR_CODE 设置为 0,我仍然会在 #if 块内获得 xml 文字,但在我的代码中我 #if 'ed 常规 VB 源代码的任何地方都没有编译代码。
这使我相信编译过程在 #if 语句之前处理 xml 文字。我错过了什么吗?