public override bool Execute()
        {
            try
            {
                GitExtensions.TryHelpFindLibGit2NativeBinaries(this.TargetsPath);

                var cloudBuild = CloudBuild.Active;
                var oracle     = VersionOracle.Create(Directory.GetCurrentDirectory(), this.GitRepoRoot, cloudBuild);
                if (!string.IsNullOrEmpty(this.DefaultPublicRelease))
                {
                    oracle.PublicRelease = string.Equals(this.DefaultPublicRelease, "true", StringComparison.OrdinalIgnoreCase);
                }

                if (this.BuildMetadata != null)
                {
                    oracle.BuildMetadata.AddRange(this.BuildMetadata);
                }

                this.PublicRelease                = oracle.PublicRelease;
                this.Version                      = oracle.Version.ToString();
                this.AssemblyVersion              = oracle.AssemblyVersion.ToString();
                this.AssemblyFileVersion          = oracle.AssemblyFileVersion.ToString();
                this.AssemblyInformationalVersion = oracle.AssemblyInformationalVersion;
                this.SimpleVersion                = oracle.SimpleVersion.ToString();
                this.MajorMinorVersion            = oracle.MajorMinorVersion.ToString();
                this.BuildNumber                  = oracle.BuildNumber;
                this.PrereleaseVersion            = oracle.PrereleaseVersion;
                this.GitCommitId                  = oracle.GitCommitId;
                this.GitCommitIdShort             = oracle.GitCommitIdShort;
                this.GitVersionHeight             = oracle.VersionHeight;
                this.BuildMetadataFragment        = oracle.BuildMetadataFragment;
                this.CloudBuildNumber             = oracle.CloudBuildNumberEnabled ? oracle.CloudBuildNumber : null;
                this.NuGetPackageVersion          = oracle.NuGetPackageVersion;
                this.NpmPackageVersion            = oracle.NpmPackageVersion;

                if (oracle.CloudBuildVersionVarsEnabled)
                {
                    this.CloudBuildVersionVars = oracle.CloudBuildVersionVars
                                                 .Select(item => new TaskItem(item.Key, new Dictionary <string, string> {
                        { "Value", item.Value }
                    }))
                                                 .ToArray();
                }
            }
            catch (ArgumentOutOfRangeException ex)
            {
                Log.LogErrorFromException(ex);
                return(false);
            }

            return(true);
        }