public TargetFrameworkInformation Clone() { var clonedObject = new TargetFrameworkInformation(); clonedObject.FrameworkName = FrameworkName; clonedObject.Dependencies = Dependencies.Select(item => item.Clone()).ToList(); clonedObject.Imports = new List <NuGetFramework>(Imports); clonedObject.AssetTargetFallback = AssetTargetFallback; clonedObject.Warn = Warn; clonedObject.DownloadDependencies.AddRange(DownloadDependencies.Select(item => item.Clone())); clonedObject.FrameworkReferences.AddRange(FrameworkReferences); clonedObject.RuntimeIdentifierGraphPath = RuntimeIdentifierGraphPath; clonedObject.CentralPackageVersions.AddRange(CentralPackageVersions.ToDictionary(item => item.Key, item => item.Value)); return(clonedObject); }
public override bool Execute() { var log = new MSBuildLogger(Log); log.LogDebug($"(in) ProjectUniqueName '{ProjectUniqueName}'"); log.LogDebug($"(in) TargetFrameworks '{TargetFrameworks}'"); log.LogDebug($"(in) CentralPackageVersions '{string.Join(";", CentralPackageVersions.Select(p => p.ItemSpec))}'"); var entries = new List <ITaskItem>(); var seenIds = new HashSet <string>(StringComparer.OrdinalIgnoreCase); foreach (var msbuildItem in CentralPackageVersions) { string packageId = msbuildItem.ItemSpec; if (string.IsNullOrEmpty(packageId) || !seenIds.Add(packageId)) { // Skip empty or already processed ids continue; } var properties = new Dictionary <string, string>(); properties.Add("ProjectUniqueName", ProjectUniqueName); properties.Add("Type", "CentralPackageVersion"); properties.Add("Id", packageId); BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "Version", "VersionRange"); if (!string.IsNullOrEmpty(TargetFrameworks)) { properties.Add("TargetFrameworks", TargetFrameworks); } entries.Add(new TaskItem(Guid.NewGuid().ToString(), properties)); } RestoreGraphItems = entries.ToArray(); return(true); }