Ejemplo n.º 1
0
        /// <summary>
        /// Executes the logic for this workflow activity.
        /// </summary>
        protected override void InternalExecute()
        {
            // validate file
            var path = this.File.Get(this.ActivityContext);

            if (path == null)
            {
                this.LogBuildWarning("No AssemblyInfo file specified.");

                return;
            }

            // load file
            if (!System.IO.File.Exists(path))
            {
                throw new FileNotFoundException("AssemblyInfo file not found.", path);
            }

            this.file = new AssemblyInfoFile(path);

            // read all loaded attribute values
            this.ReadStringAttribute("AssemblyCompany", this.AssemblyCompany);
            this.ReadStringAttribute("AssemblyConfiguration", this.AssemblyConfiguration);
            this.ReadStringAttribute("AssemblyCopyright", this.AssemblyCopyright);
            this.ReadStringAttribute("AssemblyDescription", this.AssemblyDescription);
            this.ReadStringAttribute("AssemblyProduct", this.AssemblyProduct);
            this.ReadStringAttribute("AssemblyTitle", this.AssemblyTitle);
            this.ReadStringAttribute("AssemblyTrademark", this.AssemblyTrademark);
            this.ReadStringAttribute("AssemblyCulture", this.AssemblyCulture);
            this.ReadBoolAttribute("AssemblyDelaySign", this.AssemblyDelaySign);
            this.ReadGuidAttribute("Guid", this.Guid);
            this.ReadStringAttribute("AssemblyKeyFile", this.AssemblyKeyFile);
            this.ReadStringAttribute("AssemblyKeyName", this.AssemblyKeyName);
            this.ReadBoolAttribute("CLSCompliant", this.CLSCompliant);
            this.ReadBoolAttribute("ComVisible", this.ComVisible);
            this.ReadStringAttribute("AssemblyVersion", this.AssemblyVersion);
            this.ReadStringAttribute("AssemblyFileVersion", this.AssemblyFileVersion);
            this.ReadStringAttribute("AssemblyInformationalVersion", this.AssemblyInformationalVersion);
        }
        /// <summary>
        /// Executes the logic for this workflow activity.
        /// </summary>
        protected override void InternalExecute()
        {
            // initialize values
            var now         = DateTime.Now;
            var version     = string.Empty;
            var fileVersion = string.Empty;

            this.tokenEvaluators = new Dictionary <string, Func <string, string> >
            {
                { "current", p => "-1" },
                { "increment", p => "-1" },
                { "date", p => now.ToString(p, System.Globalization.CultureInfo.InvariantCulture) },
                { "version", p => version },
                { "fileversion", p => fileVersion }
            };

            this.MaxAssemblyVersion.Set(this.ActivityContext, new Version(0, 0, 0, 0));
            this.MaxAssemblyFileVersion.Set(this.ActivityContext, new Version(0, 0, 0, 0));
            this.MaxAssemblyInformationalVersion.Set(this.ActivityContext, string.Empty);

            // update all files
            var files = this.Files.Get(this.ActivityContext);

            if (files != null && files.Any())
            {
                foreach (var path in files)
                {
                    // load file
                    if (!File.Exists(path))
                    {
                        throw new FileNotFoundException("AssemblyInfo file not found.", path);
                    }

                    this.file = new AssemblyInfoFile(path);

                    // update version attributes
                    version = this.UpdateVersion(
                        "AssemblyVersion",
                        this.AssemblyVersion.Get(this.ActivityContext),
                        this.MaxAssemblyVersion);

                    fileVersion = this.UpdateVersion(
                        "AssemblyFileVersion",
                        this.AssemblyFileVersion.Get(this.ActivityContext),
                        this.MaxAssemblyFileVersion);

                    var infoVersion = this.UpdateAttribute("AssemblyInformationalVersion", this.AssemblyInformationalVersion.Get(this.ActivityContext), true);
                    if (string.Compare(infoVersion, this.MaxAssemblyInformationalVersion.Get(this.ActivityContext), StringComparison.Ordinal) > 0)
                    {
                        this.MaxAssemblyInformationalVersion.Set(this.ActivityContext, infoVersion);
                    }

                    // update other attributes
                    this.UpdateAttribute("AssemblyCompany", this.AssemblyCompany.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyConfiguration", this.AssemblyConfiguration.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyCopyright", this.AssemblyCopyright.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyDescription", this.AssemblyDescription.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyProduct", this.AssemblyProduct.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyTitle", this.AssemblyTitle.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyTrademark", this.AssemblyTrademark.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyCulture", this.AssemblyCulture.Get(this.ActivityContext), false);
                    this.UpdateAttribute("AssemblyDelaySign", this.AssemblyDelaySign.Get(this.ActivityContext).HasValue ? BooleanToString(path, this.AssemblyDelaySign.Get(this.ActivityContext).Value) : null, false);
                    this.UpdateAttribute("Guid", this.Guid.Get(this.ActivityContext).HasValue ? this.Guid.Get(this.ActivityContext).Value.ToString() : null, false);
                    this.UpdateAttribute("AssemblyKeyFile", this.AssemblyKeyFile.Get(this.ActivityContext), false);
                    this.UpdateAttribute("AssemblyKeyName", this.AssemblyKeyName.Get(this.ActivityContext), false);
                    this.UpdateAttribute("CLSCompliant", this.CLSCompliant.Get(this.ActivityContext).HasValue ? BooleanToString(path, this.CLSCompliant.Get(this.ActivityContext).Value) : null, false);
                    this.UpdateAttribute("ComVisible", this.ComVisible.Get(this.ActivityContext).HasValue ? BooleanToString(path, this.ComVisible.Get(this.ActivityContext).Value) : null, false);

                    // write to file (unset and set back ReadOnly attribute if present).
                    var fileAttributes    = File.GetAttributes(path);
                    var attributesChanged = false;

                    if ((fileAttributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
                    {
                        File.SetAttributes(path, fileAttributes ^ FileAttributes.ReadOnly);
                        attributesChanged = true;
                    }

                    using (var sw = new StreamWriter(path))
                    {
                        this.file.Write(sw);
                    }

                    if (attributesChanged)
                    {
                        File.SetAttributes(path, FileAttributes.ReadOnly);
                    }

                    // log successful update
                    this.LogBuildMessage("AssemblyInfo file '" + path + "' was successfully updated.");
                }
            }
            else
            {
                this.LogBuildWarning("No AssemblyInfo files specified.");
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Executes the logic for this workflow activity.
        /// </summary>
        protected override void InternalExecute()
        {
            // initialize values
            var now = DateTime.Now;
            var version = string.Empty;
            var fileVersion = string.Empty;
            var versions = new List<Version>();
            var fileVersions = new List<Version>();
            var infoVersions = new List<string>();
            this.tokenEvaluators = new Dictionary<string, Func<string, string>>
            {
                { "current", p => "-1" },
                { "increment", p => "-1" },
                { "date", p => now.ToString(p, System.Globalization.CultureInfo.InvariantCulture) },
                { "version", p => version },
                { "fileversion", p => fileVersion }
            };

            this.MaxAssemblyVersion.Set(this.ActivityContext, new Version(0, 0, 0, 0));
            this.MaxAssemblyFileVersion.Set(this.ActivityContext, new Version(0, 0, 0, 0));
            this.MaxAssemblyInformationalVersion.Set(this.ActivityContext, string.Empty);
            this.AssemblyVersions.Set(this.ActivityContext, new List<Version>());
            this.AssemblyFileVersions.Set(this.ActivityContext, new List<Version>());
            this.AssemblyInformationalVersions.Set(this.ActivityContext, new List<string>());

            // update all files
            var files = this.Files.Get(this.ActivityContext);
            if (files != null && files.Any())
            {
                foreach (var path in files)
                {
                    // load file
                    if (!File.Exists(path))
                    {
                        throw new FileNotFoundException("AssemblyInfo file not found.", path);
                    }

                    this.file = new AssemblyInfoFile(path);

                    // update version attributes
                    version = this.UpdateVersion(
                        "AssemblyVersion",
                        this.AssemblyVersion.Get(this.ActivityContext),
                        this.MaxAssemblyVersion);

                    var parsedVersion = default(Version);
                    if (Version.TryParse(version, out parsedVersion))
                    {
                        versions.Add(parsedVersion);
                    }

                    fileVersion = this.UpdateVersion(
                        "AssemblyFileVersion",
                        this.AssemblyFileVersion.Get(this.ActivityContext),
                        this.MaxAssemblyFileVersion);

                    if (Version.TryParse(fileVersion, out parsedVersion))
                    {
                        fileVersions.Add(parsedVersion);
                    }

                    var infoVersion = this.UpdateAttribute("AssemblyInformationalVersion", this.AssemblyInformationalVersion.Get(this.ActivityContext), true);
                    if (string.Compare(infoVersion, this.MaxAssemblyInformationalVersion.Get(this.ActivityContext), StringComparison.Ordinal) > 0)
                    {
                        this.MaxAssemblyInformationalVersion.Set(this.ActivityContext, infoVersion);
                    }

                    infoVersions.Add(infoVersion);

                    // update other attributes
                    this.UpdateAttribute("AssemblyCompany", this.AssemblyCompany.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyConfiguration", this.AssemblyConfiguration.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyCopyright", this.AssemblyCopyright.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyDescription", this.AssemblyDescription.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyProduct", this.AssemblyProduct.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyTitle", this.AssemblyTitle.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyTrademark", this.AssemblyTrademark.Get(this.ActivityContext), true);
                    this.UpdateAttribute("AssemblyCulture", this.AssemblyCulture.Get(this.ActivityContext), false);
                    this.UpdateAttribute("AssemblyDelaySign", this.AssemblyDelaySign.Get(this.ActivityContext).HasValue ? BooleanToString(path, this.AssemblyDelaySign.Get(this.ActivityContext).Value) : null, false);
                    this.UpdateAttribute("Guid", this.Guid.Get(this.ActivityContext).HasValue ? this.Guid.Get(this.ActivityContext).Value.ToString() : null, false);
                    this.UpdateAttribute("AssemblyKeyFile", this.AssemblyKeyFile.Get(this.ActivityContext), false);
                    this.UpdateAttribute("AssemblyKeyName", this.AssemblyKeyName.Get(this.ActivityContext), false);
                    this.UpdateAttribute("CLSCompliant", this.CLSCompliant.Get(this.ActivityContext).HasValue ? BooleanToString(path, this.CLSCompliant.Get(this.ActivityContext).Value) : null, false);
                    this.UpdateAttribute("ComVisible", this.ComVisible.Get(this.ActivityContext).HasValue ? BooleanToString(path, this.ComVisible.Get(this.ActivityContext).Value) : null, false);

                    // write to file (unset and set back ReadOnly attribute if present).
                    var fileAttributes = File.GetAttributes(path);
                    var attributesChanged = false;

                    if ((fileAttributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
                    {
                        File.SetAttributes(path, fileAttributes ^ FileAttributes.ReadOnly);
                        attributesChanged = true;
                    }

                    using (var sw = new StreamWriter(path))
                    {
                        this.file.Write(sw);
                    }

                    if (attributesChanged)
                    {
                        File.SetAttributes(path, FileAttributes.ReadOnly);
                    }

                    // log successful update
                    this.LogBuildMessage("AssemblyInfo file '" + path + "' was successfully updated.", BuildMessageImportance.High);
                }

                this.AssemblyVersions.Set(this.ActivityContext, versions);
                this.AssemblyFileVersions.Set(this.ActivityContext, fileVersions);
                this.AssemblyInformationalVersions.Set(this.ActivityContext, infoVersions);
            }
            else
            {
                this.LogBuildWarning("No AssemblyInfo files specified.");
            }
        }
        /// <summary>
        /// Executes the logic for this workflow activity.
        /// </summary>
        protected override void InternalExecute()
        {
            // validate file
            var path = this.File.Get(this.ActivityContext);
            if (path == null)
            {
                this.LogBuildWarning("No AssemblyInfo file specified.");

                return;
            }

            // load file
            if (!System.IO.File.Exists(path))
            {
                throw new FileNotFoundException("AssemblyInfo file not found.", path);
            }

            this.file = new AssemblyInfoFile(path);

            // read all loaded attribute values
            this.ReadStringAttribute("AssemblyCompany", this.AssemblyCompany);
            this.ReadStringAttribute("AssemblyConfiguration", this.AssemblyConfiguration);
            this.ReadStringAttribute("AssemblyCopyright", this.AssemblyCopyright);
            this.ReadStringAttribute("AssemblyDescription", this.AssemblyDescription);
            this.ReadStringAttribute("AssemblyProduct", this.AssemblyProduct);
            this.ReadStringAttribute("AssemblyTitle", this.AssemblyTitle);
            this.ReadStringAttribute("AssemblyTrademark", this.AssemblyTrademark);
            this.ReadStringAttribute("AssemblyCulture", this.AssemblyCulture);
            this.ReadBoolAttribute("AssemblyDelaySign", this.AssemblyDelaySign);
            this.ReadGuidAttribute("Guid", this.Guid);
            this.ReadStringAttribute("AssemblyKeyFile", this.AssemblyKeyFile);
            this.ReadStringAttribute("AssemblyKeyName", this.AssemblyKeyName);
            this.ReadBoolAttribute("CLSCompliant", this.CLSCompliant);
            this.ReadBoolAttribute("ComVisible", this.ComVisible);
            this.ReadStringAttribute("AssemblyVersion", this.AssemblyVersion);
            this.ReadStringAttribute("AssemblyFileVersion", this.AssemblyFileVersion);
            this.ReadStringAttribute("AssemblyInformationalVersion", this.AssemblyInformationalVersion);
        }