示例#1
0
        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);
        }
示例#2
0
        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);
        }