protected override void ExecuteCore()

in src/Tasks/Microsoft.NET.Build.Tasks/ApplyImplicitVersions.cs [28:61]


        protected override void ExecuteCore()
        {
            List<string> buildWarnings = new List<string>();

            var packageReferencesToUpdate = new List<ITaskItem>();

            var implicitVersionTable = GetApplicableImplicitVersionTable();

            foreach (var packageReference in PackageReferences)
            {
                ImplicitPackageReferenceVersion implicitVersion;
                if (implicitVersionTable.TryGetValue(packageReference.ItemSpec, out implicitVersion))
                {
                    string versionOnPackageReference = packageReference.GetMetadata(MetadataKeys.Version);
                    if (string.IsNullOrEmpty(versionOnPackageReference))
                    {
                        packageReference.SetMetadata(MetadataKeys.Version, 
                            TargetLatestRuntimePatch ? implicitVersion.LatestVersion : implicitVersion.DefaultVersion);

                        packageReference.SetMetadata(MetadataKeys.IsImplicitlyDefined, "true");

                        packageReferencesToUpdate.Add(packageReference);
                    }
                    else if (!(packageReference.GetBooleanMetadata(MetadataKeys.AllowExplicitVersion) ?? false))
                    {
                        // NETSDK1071: A PackageReference to '{0}' specified a Version of `{1}`. Specifying the version of this package is not recommended.  For more information, see https://aka.ms/sdkimplicitrefs
                        buildWarnings.Add(string.Format(Strings.PackageReferenceVersionNotRecommended, packageReference.ItemSpec, versionOnPackageReference));
                    }
                }
            }

            PackageReferencesToUpdate = packageReferencesToUpdate.ToArray();
            SdkBuildWarnings = buildWarnings.ToArray();
        }