Beispiel #1
0
        private Dictionary <string, PackageOverride> BuildPackageOverrides()
        {
            Dictionary <string, PackageOverride> result;

            if (_packageOverrideItems?.Length > 0)
            {
                result = new Dictionary <string, PackageOverride>(_packageOverrideItems.Length, StringComparer.OrdinalIgnoreCase);

                foreach (ITaskItem packageOverrideItem in _packageOverrideItems)
                {
                    PackageOverride packageOverride = PackageOverride.Create(packageOverrideItem);

                    if (result.TryGetValue(packageOverride.PackageName, out PackageOverride existing))
                    {
                        MergePackageOverrides(packageOverride, existing);
                    }
                    else
                    {
                        result[packageOverride.PackageName] = packageOverride;
                    }
                }
            }
            else
            {
                result = null;
            }

            return(result);
        }
Beispiel #2
0
 /// <summary>
 /// Merges newPackageOverride into existingPackageOverride by adding all the new overridden packages
 /// and taking the highest version when they both contain the same overridden package.
 /// </summary>
 private static void MergePackageOverrides(PackageOverride newPackageOverride, PackageOverride existingPackageOverride)
 {
     foreach (KeyValuePair <string, Version> newOverride in newPackageOverride.OverriddenPackages)
     {
         if (existingPackageOverride.OverriddenPackages.TryGetValue(newOverride.Key, out Version existingOverrideVersion))
         {
             if (existingOverrideVersion < newOverride.Value)
             {
                 existingPackageOverride.OverriddenPackages[newOverride.Key] = newOverride.Value;
             }
         }
         else
         {
             existingPackageOverride.OverriddenPackages[newOverride.Key] = newOverride.Value;
         }
     }
 }