在Dynamics AX中管理不同的项目配置

时间:2010-11-26 10:49:17

标签: configuration axapta dynamics-ax-2009

我们在保持不同配置方面遇到麻烦。请允许我解释一下

情景:

假设您有两个AX项目,例如 P M ,它们都会更改ProdRouteJob表,在其自己的项目特定类中调用方法。
当然,您在开发人员计算机上拥有所有这些类,并且ProdRouteJob编译得很好,但是对于新服务器上的安装,您不希望为每个未安装的项目添加存根类,对吗?所以你将这些调用包装到像

这样的项目类中
if( Global::isConfigurationkeyEnabled( <projectPConfKey> ) )  
     // call project P stuff

将它们干净地封装起来。你声明所有项目的配置键,你准备好了,对吧?

但是,如果您未在此计算机上安装项目 P ,则会引发错误,因为其projectPConfKey未知。现在您可以在每个安装中为所有项目安装配置密钥,只是告诉服务器有projectPConfKey这样的东西,但是所有这些if将评估为真...

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

或者我在这里缺少一些完全基本的东西吗?

编辑:

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

我有点不知所措,接受了回答,因为德马斯回答了我提出的问题,而Kjeldsen先生回答了demas回答中评论对话中出现的问题。我将向Kjeldsen先生道歉,将demas的回答视为已被接受。

2 个答案:

答案 0 :(得分:1)

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

此检查仅适用于执行时间,当您编译代码时,您会收到错误。

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

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

#if.never
someMissingCall();
#endif

但我不确定它现在会起作用。

答案 1 :(得分:1)

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

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

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