Today we will cover the topic of using labels with the Team Foundation Server (TFS) as our Microsoft Dynamics AX Version Control System (VCS).
If you set up a new environment from scratch and your repository is empty, you can import your existing ALD label files to AX and add it to VCS in 2 easy steps.
1) You may use the standard “ALDImport” startup command with the AX client and pass in your labels one by one, or use the following code to import all files from a specific folder with the help of .Net managed code:
static void WIK_ImportLabelFromFolder(Args _args) { #AOT SysLabelFile labelFile; Set languages = new Set(Types::String); System.Array fileList = System.IO.Directory::GetFiles(@"C:\TEMP\", "*.ald"); Filename fileName; int i; for (i = 0; i < CLRInterop::getAnyTypeForObject(fileList.get_Length()); i++) { fileName = CLRInterop::getAnyTypeForObject(fileList.GetValue(i)); info(fileName); labelFile = sysLabelFile::newFilename(fileName); languages.add(labelFile.parmLanguageId()); if (!Treenode::findNode(strfmt(#LabelFileLanguagePath, labelFile.parmModuleId(), strReplace(labelFile.parmLanguageId(), '-', '_')))) { SysLabelFile::createLabelFileInAOT(labelFile.parmModuleId(), languages); } labelFile.importAldFile(fileName); } info("Done"); }
2) Once you have your labels in the AOT, you have to dump all the languages within that label node to the TFS repository, which would be the axWIKEN-US.ALD file in my case:
static void WIK_AddLabelToVCS(Args _args) { #AOT #define.LanguageModuleId('WIK') TreeNode node; SysLabelFile labelFile; TreeNodeTraverser tnt = new TreeNodeTraverser( TreeNode::findNode(strFmt(#LabelFileLanguagesPath, #LanguageModuleId)).AOTfirstChild()); SysVersionControlSystem vcs = versioncontrol.parmSysVersionControlSystem(); node = tnt.next(); while (vcs && node) { labelFile = SysLabelFile::newLanguageModule( strReplace(node.AOTname(), '_', '-'), #LanguageModuleId); vcs.commandAdd(labelFile); node = tnt.next(); } }