AX - 如何从缓存中刷新宏

时间:2014-06-13 15:06:49

标签: macros axapta flush ax

AX宏似乎仍然在缓存中

我在AOT中定义了一个宏,并在classDeclaration

中声明

因为我需要更改其中一个值 我想强制所有用户在重新打开AX时获得新值 但用户仍然获得宏的旧值

宏定义:TestMacro

#define.columnA(1)
//#define.columnC(3)    // old value
#define.columnC(2)      // new value

类声明:TestClass

class TestClass
{
    #TestMacro  // Remove/save and re-add/save this declaration apparently solved
}

尝试解决方案:

  1. 删除与TestClass相关的使用数据(适用于所有用户):失败
  2. 从班级声明中删除并重新添加宏:工作
  3. 其他一些想法如何在AX中刷新宏缓存?

2 个答案:

答案 0 :(得分:2)

据我所知,没有专门用于宏的缓存,而是一个缓存所有AOT对象的对象缓存。您可以使用工具&gt;来刷新此缓存开发工具&gt; <应用对象>刷新字典/ AOD

但是你的问题不是这个对象缓存,而是TestClass的编译版本。在编译期间,TestMacro的引用将替换为实际的宏值。因此,即使您更改TestMacroTestClass的编译版本仍将使用旧的宏值运行。您必须重新编译TestClass,以便它会考虑TestMacro中的更改。

如果您的宏值定期更改,您应该考虑使用参数表而不是宏。

答案 1 :(得分:1)

我不认为宏被缓存但在编译期间被替换。你只编译方法而不是整个类吗?