0

我们很难区分不同的配置。请允许我稍微解释一下

设想:

假设您有两个 AX 项目,例如PM,它们都更改ProdRouteJob表,调用它们自己的项目特定类之一中的方法。
当然,您的开发人员机器上有所有这些类,并且ProdRouteJob编译得很好,但是对于在新服务器上的安装,您不想为每个未安装的项目添加存根类,是吗?因此,您将这些对项目类的调用包装成类似

if( Global::isConfigurationkeyEnabled( <projectPConfKey> ) )  
     // call project P stuff

干净地封装它们。您为所有项目声明了配置密钥,就可以开始了,对吧?

但是,如果您还没有在这台机器上安装项目P,这会引发错误,因为它projectPConfKey是未知的。现在您可以在每次安装时为所有项目安装配置密钥,只是为了告诉服务器存在 a 这样的东西projectPConfKey,但是所有这些ifs 都会评估为 true...

简而言之:您如何在项目 XPO 中包含配置键,以便您的代码编译,但同时从一开始就禁用某些配置键?

还是我在这里缺少一些完全基本的东西?

编辑:

答案之间的共识(谢谢你,demas;谢谢你,Kjeldsen 先生)是通过宏或配置键尝试或多或少的自动客户端配置是不切实际的。因此,当我们在客户端安装时,我们将不得不导入带有更改的标准表,并手动取出与当前安装无关的所有更改。

我有点茫然接受哪个答案,因为 demas 回答了我提出的问题,而 Kjeldsen 先生在 demas 的回答下回答了评论对话中出现的问题。我将向 Kjeldsen 先生道歉,将 demas 的回答标记为已接受。

4

2 回答 2

1
if( Global::isConfigurationkeyEnabled( <projectPConfKey> ) ) 

此检查仅适用于执行时间,并且当您编译代码时会出现错误。

因此,当您在生产服务器上导入它们并仅导入项目 M 的更改时,您需要创建存根类或比较对象。

还有另一种方法,但我没有 Axapta 来检查它。尝试:

#if.never
someMissingCall();
#endif

但我不确定它现在是否有效。

于 2010-11-26T10:53:53.357 回答
1

大型解决方案中心 (VAR) 通常为每个模块提供单独的应用程序。如果您有 2 个模块,则您有 2 个应用程序。

好的模块与标准应用程序的冲突区域非常小,这些都保存在单独的项目中。

然后在安装时手动处理与标准和其他模块的冲突。由于碰撞区域很小并且很少改变(它不应该包含业务逻辑),所以问题很小。

于 2010-11-26T16:15:07.440 回答