This tip explains how Microsoft Business SolutionsûGreat Plains developers can use an Index File with Dexterity Source Code Control to ensure that the resources they create keep the same Resource IDs between different builds and versions of code. Examples of these resources include forms, reports, tables, and fields.
When you use the Source Code Control functionality built in to Dexterity, all resources are stored in a text representation in your source code repository (usually Microsoft Visual SourceSafe). These resources are stored with their names as the unique identifier.
In your development dictionary, the unique identifier is actually the internal Resource ID generated by Dexterity. For third-party developers (most Dexterity developers are third-party developers), these Resource IDs start at 22,000.
Each resource you add is assigned the next available Resource ID for that resource type. Therefore, your resources are numbered in the order they were created, unless you have deleted some resources, in which case the Resource ID will be reused.
When creating a new build, you make a copy of an unmodified Dynamics.dic from a client installation. Then update all your resources from the repository into this dictionary. During this process, resources are brought in to the dictionary in alphabetical order and are assigned Resource IDs as resources of each type are added.
The fact that your Resource IDs are now ordered alphabetically will cause a number of problems, including the following:
ò Updates to any modified forms or reports that exist for your product will probably fail ò Security records indicating that access to one of your forms or reports has been denied will now point to the wrong Resource ID ò Security records indicating that access to a modified version of one of your forms or reports has been granted will now point to the wrong Resource ID
In other words, the alphabetization of Resource IDs can make life difficult.
The solution is the Index File, which tracks the Resource IDs assigned to resources and ensures that they are maintained between each build of your Dexterity project.
Putting the Index File to work ------------------------------
If you have multiple developers working on a single project, you will need to assign one developer as the administrator for the project. The administratorÆs role is to create the new builds and work with the Index File. The administrator should perform the following steps on his or her machine:
1. Go to the Edit menu, select Options, and then select the Source Control tab. Make sure Enable Administrative Features is checked. If you have not created an Index File before, create one now using your current development dictionary. From the Explorer menu, select Source Control, and then select Update Index File. Once created, the Index File can be found in the repository under the Admin folder.
2. Every time a build is completed, select Explorer, Source Control, and then Update Index File. This will create the Index File that will be used for the next build.
3. Every time you create a new build, select Explorer, Source Control, and then Update. On the Update from Repository window, check the Use Index File option. In the words of one Dexterity product manager, "Just because it is an option does not mean it is optional."
Following these steps will ensure that Resource IDs stay consistent between builds and between releases.
Note: For more information, see ôPart 9: Source Code Controlö in the Programmers Guide, Volume 1 that ships with Dexterity as a PDF document.
David Musgrave [MSFT] Senior Development Consultant MBS Services - Asia Pacific