<snip>
Rather than....
Iterating each GetAlignmentIds(), GetPipeNetworkIds(), and GetSurfaceIds(), etc., checking for IsReferenceObject == true, get the CivilDocument.Settings.AssociateShortcutProjectId string, then open <RoamableRootPrefix>\\Project Management\\ShortcutFolders.xml as XmlDocument, to iterate WorkingFolder\ShortcutFolder XmlNodes, filtering for "uuid" XmlAttribute's string value that == CivilDocument.Settings.AssociateShortcutProjectId string, to get "path" XmlAttribute's string value, then iterate the XML files found at "path" XmlAttribute's string value + \\_shortcuts\\<AeccObjectReferenceType>\\ filtering for <FileName>.Contains(<DataReferenceName>) (or WCMATCH same?), to then open THAT as XmlDocument, reading ProjectInfo\Shortcuts\Shortcut\Criteria\File XmlNode's "name" XmlAttribute's string value, to get source\parent model drawing... Sheesh, I'm winded just typing all of this malarchy, and we haven't even updated the Data References yet! Haha
... Isn't there a simpler way of going about this entire procedure?
The Working Folder history is stored in <RoamableRootPrefix>, but if that is just pointing to the location of ..\_shortcuts\ folder, and the CivilDocument.Settings contain the Associated Project ID, then why not just point directly to the same ..\_shortcuts\ folder in the first place? (or add exposed Properties to CivilDocument.Settings that expedite even this!?)
There, in the ..\_shortcuts\ folder, exists another ShortcutsHistory.xml file, which only contains the Project's UUID XmlAtrribute string value. stored to both <RoamableRootPrefix>\\Project Management\\ShortcutFolders.xml, and CivilDocument.Settings in kind... Would it not then be simpler, to store the Data References in ..\_shortcuts\ShortcutsHistory.xml file respectively with an AECC* Object XmlNode separating them, rather than an entirely dependent sub-folder structure only to store each XML file individually?
The whole things is just overly complicated, to my simple mind.