@@ -1448,7 +1448,9 @@ private Dictionary<string, HashSet<string>> GetManifestAliasesByName() {
14481448 /// <summary>
14491449 /// Use manifest aliases to cosolidate manifest metadata.
14501450 /// </summary>
1451- public void ConsolidateManifests ( ) {
1451+ /// <returns>Flattened map of highest priority manifest name by each alias of the manifest
1452+ /// name.</returns>
1453+ public Dictionary < string , string > ConsolidateManifests ( ) {
14521454 var aliasesByName = GetManifestAliasesByName ( ) ;
14531455 // Flatten graph of manifest aliases so that each entry maps to the highest priority
14541456 // name.
@@ -1494,6 +1496,7 @@ public void ConsolidateManifests() {
14941496 canonicalFilenameAndMetadataByVersion . Value ) ;
14951497 }
14961498 }
1499+ return manifestAliases ;
14971500 }
14981501
14991502 /// <summary>
@@ -1685,6 +1688,16 @@ public class ManifestReferences {
16851688 /// </summary>
16861689 public HashSet < string > obsoleteFiles = new HashSet < string > ( ) ;
16871690
1691+ /// <summary>
1692+ /// Backing store of Aliases.
1693+ /// </summary>
1694+ private HashSet < string > aliases = new HashSet < string > ( ) ;
1695+
1696+ /// <summary>
1697+ /// Alias names of this manifest.
1698+ /// </summary>
1699+ public ICollection < string > Aliases { get { return aliases ; } }
1700+
16881701 /// <summary>
16891702 /// Cache of all manifest references indexed by package name.
16901703 /// </summary>
@@ -1838,12 +1851,28 @@ public static List<ManifestReferences> FindAndReadManifests(FileMetadataSet meta
18381851 /// <returns>Dictionary of ManifestReferences indexed by package name.</returns>
18391852 public static Dictionary < string , ManifestReferences > FindAndReadManifestsByPackageName (
18401853 FileMetadataSet metadataSet ) {
1841- metadataSet . ConsolidateManifests ( ) ;
1854+ var manifestAliases = metadataSet . ConsolidateManifests ( ) ;
1855+ // Invert the map of manifest aliases to create a dictionary that maps canonical name
1856+ // to a set of aliases.
1857+ var aliasesByName = new Dictionary < string , HashSet < string > > ( ) ;
1858+ foreach ( var aliasAndName in manifestAliases ) {
1859+ var alias = aliasAndName . Key ;
1860+ var name = aliasAndName . Value ;
1861+ HashSet < string > aliases ;
1862+ if ( ! aliasesByName . TryGetValue ( name , out aliases ) ) {
1863+ aliases = new HashSet < string > ( ) ;
1864+ aliasesByName [ name ] = aliases ;
1865+ }
1866+ aliases . Add ( alias ) ;
1867+ }
1868+
18421869 var manifestReferencesByPackageName = new Dictionary < string , ManifestReferences > ( ) ;
18431870 foreach ( var metadataByVersion in metadataSet . Values ) {
18441871 ManifestReferences manifestReferences = new ManifestReferences ( ) ;
18451872 if ( manifestReferences . ParseManifests ( metadataByVersion ,
18461873 metadataSet ) ) {
1874+ manifestReferences . aliases =
1875+ aliasesByName [ manifestReferences . filenameCanonical ] ;
18471876 manifestReferencesByPackageName [ manifestReferences . filenameCanonical ] =
18481877 manifestReferences ;
18491878 }
0 commit comments