/// <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."); } }
/// <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); }