我们在保持不同配置方面遇到麻烦。请允许我解释一下
假设您有两个AX项目,例如 P 和 M ,它们都会更改ProdRouteJob
表,在其自己的项目特定类中调用方法。
当然,您在开发人员计算机上拥有所有这些类,并且ProdRouteJob
编译得很好,但是对于新服务器上的安装,您不希望为每个未安装的项目添加存根类,对吗?所以你将这些调用包装到像
if( Global::isConfigurationkeyEnabled( <projectPConfKey> ) )
// call project P stuff
将它们干净地封装起来。你声明所有项目的配置键,你准备好了,对吧?
但是,如果您未在此计算机上安装项目 P ,则会引发错误,因为其projectPConfKey
未知。现在您可以在每个安装中为所有项目安装配置密钥,只是告诉服务器有projectPConfKey
这样的东西,但是所有这些if
将评估为真...
简而言之:如何在项目XPO中包含配置键以便编译代码,但同时从一开始就禁用某些配置键?
或者我在这里缺少一些完全基本的东西吗?
答案中的共识(谢谢你,demas;谢谢你,Kjeldsen先生),通过宏或配置键尝试或多或少的自动客户端配置是不切实际的。因此,当我们在客户端安装时,我们将不得不使用我们的更改导入标准表,并手动取出与当前安装无关的所有更改。
我有点不知所措,接受了回答,因为德马斯回答了我提出的问题,而Kjeldsen先生回答了demas回答中评论对话中出现的问题。我将向Kjeldsen先生道歉,将demas的回答视为已被接受。
答案 0 :(得分:1)
if( Global::isConfigurationkeyEnabled( <projectPConfKey> ) )
此检查仅适用于执行时间,当您编译代码时,您会收到错误。
因此,当您在生产服务器上导入对象并仅导入项目M的更改时,您需要创建存根类或比较对象。
还有另外一种方法,但我没有Axapta来检查它。尝试:
#if.never
someMissingCall();
#endif
但我不确定它现在会起作用。
答案 1 :(得分:1)
大型解决方案中心(VAR)通常为每个模块提供单独的应用程序。 如果您有2个模块,则有2个应用程序。
好的模块与标准应用程序的碰撞区域非常小,这些区域保存在一个单独的项目中。
然后在安装时手动处理与标准模块和其他模块的冲突。由于碰撞区域很小并且很少改变(它不应该包含商务逻辑),因此问题很小。