Пример #1
0
        /// <summary>
        /// Executes the task.
        /// </summary>
        /// <returns>true if the execution was successful; otherwise, false.</returns>
        public override bool Execute()
        {
            // This task is only required if MSBuild does not generate the assembly info data.
            if (GenerateAssemblyInfo)
            {
                return(true);
            }

            logger = new TaskLogger(Log);
            logger.Trace("NetRevisionTask: PatchAssemblyInfo");

            // Analyse working directory
            RevisionData data = Common.ProcessDirectory(ProjectDir, RequiredVcs, TagMatch, logger);

            if (!string.IsNullOrEmpty(RequiredVcs) && data.VcsProvider == null)
            {
                logger.Error($@"Required VCS ""{RequiredVcs}"" not present.");
                return(false);
            }
            if (string.IsNullOrEmpty(RevisionFormat))
            {
                RevisionFormat = Common.GetRevisionFormat(ProjectDir, logger, true);
            }
            if (string.IsNullOrEmpty(RevisionFormat))
            {
                RevisionFormat = data.GetDefaultRevisionFormat(logger);
            }

            var rf = new RevisionFormatter {
                RevisionData = data, RemoveTagV = RemoveTagV
            };

            try
            {
                var aih = new AssemblyInfoHelper(ProjectDir, true, logger);
                SourceAssemblyInfo  = aih.FileName;
                PatchedAssemblyInfo = aih.PatchFile(
                    IntermediateOutputPath,
                    rf,
                    RevisionFormat,
                    ResolveSimpleAttributes,
                    ResolveInformationalAttribute,
                    RevisionNumberOnly,
                    ResolveCopyright,
                    ShowRevision,
                    ProcessAnyProperty);
            }
            catch (FormatException ex)
            {
                logger.Error(ex.Message);
                return(false);
            }

            return(true);
        }