Macros AX-如何从缓存刷新宏

Macros AX-如何从缓存刷新宏,macros,axapta,flush,ax,Macros,Axapta,Flush,Ax,AX宏似乎仍在缓存中 我在AOT中定义了一个宏,并在类声明中声明了它 因为我需要更改其中一个值 我想强制所有用户在重新打开AX时获取新值 但用户仍在获取宏的旧值 宏定义:TestMacro 类声明:TestClass 尝试的解决方案: 删除与TestClass相关的使用数据(针对所有用户):失败 从类声明中删除并重新添加宏:已工作 关于如何在AX中刷新宏缓存的其他一些想法?据我所知,没有专门用于宏的缓存,而是一个缓存所有AOT对象的对象缓存。您可以使用工具>开发工具>应用程序对象>刷新字典/AO

AX宏似乎仍在缓存中

我在AOT中定义了一个宏,并在类声明中声明了它

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

宏定义:TestMacro

类声明:TestClass

尝试的解决方案:
  • 删除与TestClass相关的使用数据(针对所有用户):失败
  • 从类声明中删除并重新添加宏:已工作

  • 关于如何在AX中刷新宏缓存的其他一些想法?

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

    但是您的问题不是这个对象缓存,而是编译版本的
    TestClass
    。在编译过程中,对
    TestMacro
    的引用被替换为实际的宏值。因此,即使您更改了
    TestMacro
    ,编译版本的
    TestClass
    仍将使用旧的宏值运行。必须重新编译<代码> TestClass <代码>,以便考虑<代码>测试宏>代码> < /p>。
    <>如果你的宏值有规律地变化,你应该考虑使用一个参数表而不是一个宏。p> 据我所知,没有专门用于宏的缓存,只有一个缓存所有AOT对象的对象缓存。您可以使用工具>开发工具>应用程序对象>刷新字典/AOD刷新此缓存

    但是您的问题不是这个对象缓存,而是编译版本的
    TestClass
    。在编译过程中,对
    TestMacro
    的引用被替换为实际的宏值。因此,即使您更改了
    TestMacro
    ,编译版本的
    TestClass
    仍将使用旧的宏值运行。必须重新编译<代码> TestClass <代码>,以便考虑<代码>测试宏>代码> < /p>。
    <>如果你的宏值有规律地变化,你应该考虑使用一个参数表而不是一个宏。p> 据我所知,没有专门用于宏的缓存,只有一个缓存所有AOT对象的对象缓存。您可以使用工具>开发工具>应用程序对象>刷新字典/AOD刷新此缓存

    但是您的问题不是这个对象缓存,而是编译版本的
    TestClass
    。在编译过程中,对
    TestMacro
    的引用被替换为实际的宏值。因此,即使您更改了
    TestMacro
    ,编译版本的
    TestClass
    仍将使用旧的宏值运行。必须重新编译<代码> TestClass <代码>,以便考虑<代码>测试宏>代码> < /p>。
    <>如果你的宏值有规律地变化,你应该考虑使用一个参数表而不是一个宏。p> 据我所知,没有专门用于宏的缓存,只有一个缓存所有AOT对象的对象缓存。您可以使用工具>开发工具>应用程序对象>刷新字典/AOD刷新此缓存

    但是您的问题不是这个对象缓存,而是编译版本的
    TestClass
    。在编译过程中,对
    TestMacro
    的引用被替换为实际的宏值。因此,即使您更改了
    TestMacro
    ,编译版本的
    TestClass
    仍将使用旧的宏值运行。必须重新编译<代码> TestClass <代码>,以便考虑<代码>测试宏>代码> < /p>。
    <>如果你的宏值有规律地变化,你应该考虑使用一个参数表而不是一个宏。p> 我认为宏不会被缓存,而是在编译过程中被替换。是否只编译方法而不是整个类?

    我认为宏不会被缓存,而是在编译过程中被替换。是否只编译方法而不是整个类?

    我认为宏不会被缓存,而是在编译过程中被替换。是否只编译方法而不是整个类?

    我认为宏不会被缓存,而是在编译过程中被替换。您是否只编译方法而不是整个类?

    Hi FH!谢谢你的回答。你是对的,我要找的是为宏检索新值的触发器。然后“全部擦除”不是我的解决方案,也不是将超过十个类从常量(宏值)更改为参数表,因为它的设计目的是使常量在环境之间的部署更容易,并避免在安装时返工。不幸的是,这个理论“……重新编译TestClass,以便它将考虑TestMacro的变化。”是不起作用的。这不是一个理论,我在AX 2012 R2 CU7系统中进行了测试。FH,我刚刚在AX 2012 R3上测试过,它不起作用。谢谢你的回答。你是对的,我要找的是为宏检索新值的触发器。然后“全部擦除”不是我的解决方案,也不是将超过十个类从常量(宏值)更改为参数表,因为它的设计目的是使常量在环境之间的部署更容易,并避免在安装时返工。不幸的是,这个理论“……重新编译TestClass,以便它将考虑TestMacro的变化。”是不起作用的。这不是一个理论,我在AX 2012 R2 CU7系统中进行了测试。FH,我刚刚在AX 2012 R3上测试过,它不起作用。谢谢你的回答。你是对的,我要找的是为宏检索新值的触发器。然后“全部擦除”不是我的解决方案,也不是将超过十个类从常量(宏值)更改为参数表,因为它的设计目的是使常量在环境之间的部署更容易,并避免在安装时返工。不幸的是,理论“…重新编译TestClass以便它将
    #define.columnA(1)
    //#define.columnC(3)    // old value
    #define.columnC(2)      // new value
    
    class TestClass
    {
        #TestMacro  // Remove/save and re-add/save this declaration apparently solved
    }