public override void AfterWeaving() { if (!_dotGitDirExists) { return; } try { using (var fileStream = File.Open(AssemblyFilePath, FileMode.Open, FileAccess.ReadWrite)) { var peReader = new PeImage(fileStream); peReader.ReadHeader(); peReader.CalculateCheckSum(); var versionStream = peReader.GetVersionResourceStream(); var reader = new VersionResourceReader(versionStream); var versions = reader.Read(); if (versions.FixedFileInfo != null) { var fixedFileInfo = versions.FixedFileInfo.Value; fixedFileInfo.FileVersion = _assemblyVersion; fixedFileInfo.ProductVersion = _assemblyVersion; versions.FixedFileInfo = fixedFileInfo; } else { LogWarning("versions.FixedFileInfo was null, so not patched"); } foreach (var stringTable in versions.StringFileInfo) { SetTableValue(stringTable.Values, "FileVersion", _assemblyVersion.ToString()); SetTableValue(stringTable.Values, "ProductVersion", _assemblyInfoVersion); } versionStream.Position = 0; var writer = new VersionResourceWriter(versionStream); writer.Write(versions); peReader.SetVersionResourceStream(versionStream); peReader.WriteCheckSum(); } } catch (Exception ex) { throw new WeavingException($"Failed to update the assembly information. {ex.Message}"); } }
public void AfterWeaving() { if (!dotGitDirExists) { return; } try { using (var fileStream = File.Open(AssemblyFilePath, FileMode.Open, FileAccess.ReadWrite)) { var peReader = new PeImage(fileStream); peReader.ReadHeader(); peReader.CalculateCheckSum(); var versionStream = peReader.GetVersionResourceStream(); var reader = new VersionResourceReader(versionStream); var versions = reader.Read(); var fixedFileInfo = versions.FixedFileInfo.Value; fixedFileInfo.FileVersion = assemblyVersion; fixedFileInfo.ProductVersion = assemblyVersion; versions.FixedFileInfo = fixedFileInfo; foreach (var stringTable in versions.StringFileInfo) { if (stringTable.Values.ContainsKey("FileVersion")) { stringTable.Values["FileVersion"] = assemblyVersion.ToString(); } if (stringTable.Values.ContainsKey("ProductVersion")) { stringTable.Values["ProductVersion"] = assemblyInfoVersion; } } versionStream.Position = 0; var writer = new VersionResourceWriter(versionStream); writer.Write(versions); peReader.SetVersionResourceStream(versionStream); peReader.WriteCheckSum(); } } catch (Exception ex) { throw new WeavingException($"Failed to update the assembly information. {ex.Message}"); } }