Управление различными конфигурациями проекта в Dynamics AX - PullRequest
0 голосов
/ 26 ноября 2010

У нас проблемы с разделением наших различных конфигураций.Позвольте мне объяснить с небольшим

сценарием:

Допустим, у вас есть два проекта AX, например, P и M , которые оба изменяютProdRouteJob таблица, вызывающая методы в одном из собственных классов, специфичных для проекта.
Конечно, у вас есть все эти классы на компьютере разработчика, и ProdRouteJob прекрасно компилируется, но для установки на новый сервер вам не нужноне хотите добавить классы-заглушки для каждого неустановленного проекта?Таким образом, вы заключаете эти вызовы в классы проекта в нечто вроде

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

, чтобы аккуратно их инкапсулировать.Вы объявляете конфигурационные ключи для всех своих проектов и готовы к работе, верно?

Однако, это выдает ошибку, если вы не установили проект P на этом компьютере, потому что его projectPConfKey неизвестно.Теперь вы можете при каждой установке устанавливать конфигурационные ключи для всех ваших проектов, просто сказать серверу, что существует такая вещь, как projectPConfKey, но тогда все эти if s будут оценены как истинные ...

Вкратце: как включить конфигурационные ключи в XPO вашего проекта, чтобы ваш код компилировался, но в то же время, чтобы некоторые конфигурационные ключи были отключены с самого начала?

Или есть что-то совершенно базовое, что я здесь упускаю?

РЕДАКТИРОВАТЬ:

Консенсус среди ответов (спасибо, demas; спасибо, г-н Kjeldsen)заключается в том, что нецелесообразно пытаться выполнить более или менее автоматическую настройку на стороне клиента с помощью макросов или ключей конфигурации.Таким образом, при установке на клиенте мы должны будем импортировать стандартные таблицы с нашими изменениями и вручную удалить все изменения, не относящиеся к текущей установке.

Я немного растерялся, ответ на который я принял, потому что Димас ответил на вопрос, который я задал, а г-н Кьельдсен ответил на вопросы, возникшие в разговоре с комментариями под ответом Димаса.Я с извинениями перед г-ном Кьельдсеном отмечу ответ Демаса как принятый.

Ответы [ 2 ]

1 голос
/ 26 ноября 2010

Большие центры решений (VAR) обычно имеют отдельные приложения для каждого модуля.Если у вас есть 2 модуля, у вас есть 2 приложения.

Хорошие модули имеют очень маленькие области столкновения со стандартным приложением, они хранятся в отдельном проекте.

Столкновения со стандартным и другими модулямизатем обрабатываются вручную во время установки.Поскольку область столкновения мала и редко изменяется (она не должна содержать бизнес-логику), проблема минимальна.

1 голос
/ 26 ноября 2010
if( Global::isConfigurationkeyEnabled( <projectPConfKey> ) ) 

Эта проверка работает только во время выполнения, и когда вы компилируете код, вы получаете ошибку.

Таким образом, вам нужно создавать классы-заглушки или сравнивать объекты, когда вы импортируете их на рабочий сервер и импортируете только изменения проекта M.

Есть еще один подход, но у меня нет Axapta, чтобы проверить это. Попробуйте:

#if.never
someMissingCall();
#endif

Но я не уверен, что это будет работать сейчас.

...