From da291a9845e82aa4488cf76a65428db50b1c4d4d Mon Sep 17 00:00:00 2001 From: Oren Novotny Date: Sat, 2 Jul 2016 15:43:13 -0400 Subject: [PATCH 1/8] Add excludeUpdateAssemblyVersion parameter to skip updating the AssemblyVersion attribute --- ...semblyVersionFileWhenExcluded.received.txt | 2 + ...ceAssemblyVersionWhenExcluded.received.txt | 2 + ...semblyVersionFileWhenExcluded.received.txt | 2 + ...ceAssemblyVersionWhenExcluded.received.txt | 2 + ...semblyVersionFileWhenExcluded.received.txt | 2 + ...ceAssemblyVersionWhenExcluded.received.txt | 2 + .../ArgumentParserTests.cs | 9 +++ .../AssemblyInfoFileUpdateTests.cs | 62 +++++++++++++++++++ src/GitVersionExe/ArgumentParser.cs | 18 ++++++ src/GitVersionExe/Arguments.cs | 1 + src/GitVersionExe/AssemblyInfoFileUpdate.cs | 5 +- 11 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt create mode 100644 src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt create mode 100644 src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt create mode 100644 src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt create mode 100644 src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt create mode 100644 src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt diff --git a/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt new file mode 100644 index 0000000000..fedb5a46ba --- /dev/null +++ b/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt @@ -0,0 +1,2 @@ +[assembly: AssemblyFileVersion("2.3.1.0")] +[assembly: AssemblyInformationalVersion("2.3.1+3.Branch.foo.Sha.hash")] \ No newline at end of file diff --git a/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt new file mode 100644 index 0000000000..fedb5a46ba --- /dev/null +++ b/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt @@ -0,0 +1,2 @@ +[assembly: AssemblyFileVersion("2.3.1.0")] +[assembly: AssemblyInformationalVersion("2.3.1+3.Branch.foo.Sha.hash")] \ No newline at end of file diff --git a/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt new file mode 100644 index 0000000000..91c2987c43 --- /dev/null +++ b/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt @@ -0,0 +1,2 @@ +[] +[] \ No newline at end of file diff --git a/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt new file mode 100644 index 0000000000..91c2987c43 --- /dev/null +++ b/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt @@ -0,0 +1,2 @@ +[] +[] \ No newline at end of file diff --git a/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt new file mode 100644 index 0000000000..c66faf90a7 --- /dev/null +++ b/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt new file mode 100644 index 0000000000..c66faf90a7 --- /dev/null +++ b/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/GitVersionExe.Tests/ArgumentParserTests.cs b/src/GitVersionExe.Tests/ArgumentParserTests.cs index bc0d23eada..7d1b045259 100644 --- a/src/GitVersionExe.Tests/ArgumentParserTests.cs +++ b/src/GitVersionExe.Tests/ArgumentParserTests.cs @@ -187,6 +187,15 @@ public void update_assembly_info_true(string command) arguments.UpdateAssemblyInfo.ShouldBe(true); } + [TestCase("-excludeUpdateAssemblyVersion true")] + [TestCase("-excludeUpdateAssemblyVersion 1")] + [TestCase("-excludeUpdateAssemblyVersion")] + public void exclude_update_assembly_version_True(string command) + { + var arguments = ArgumentParser.ParseArguments(command); + arguments.ExcludeUpdateAssemblyVersion.ShouldBe(true); + } + [TestCase("-updateAssemblyInfo false")] [TestCase("-updateAssemblyInfo 0")] public void update_assembly_info_false(string command) diff --git a/src/GitVersionExe.Tests/AssemblyInfoFileUpdateTests.cs b/src/GitVersionExe.Tests/AssemblyInfoFileUpdateTests.cs index d9e6bc2340..0e1b39940e 100644 --- a/src/GitVersionExe.Tests/AssemblyInfoFileUpdateTests.cs +++ b/src/GitVersionExe.Tests/AssemblyInfoFileUpdateTests.cs @@ -206,6 +206,37 @@ public void ShouldReplaceAssemblyVersion(string fileExtension, string assemblyFi }); } + + [TestCase("cs", "[assembly: AssemblyFileVersion(\"1.0.0.0\")]")] + [TestCase("fs", "[]")] + [TestCase("vb", "")] + [Category("NoMono")] + [Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")] + public void ShouldNotReplaceAssemblyVersionWhenExcluded(string fileExtension, string assemblyFileContent) + { + var workingDir = Path.GetTempPath(); + var fileName = Path.Combine(workingDir, "AssemblyInfo." + fileExtension); + + VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fileSystem, variables) => + { + var args = new Arguments + { + UpdateAssemblyInfo = true, + ExcludeUpdateAssemblyVersion = true, + UpdateAssemblyInfoFileName = new HashSet + { + "AssemblyInfo." + fileExtension + } + }; + + using (new AssemblyInfoFileUpdate(args, workingDir, variables, fileSystem)) + { + assemblyFileContent = fileSystem.ReadAllText(fileName); + assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension))); + } + }); + } + [TestCase("cs", "[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyInformationalVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]")] [TestCase("fs", "[]\r\n[]\r\n[]")] [TestCase("vb", "\r\n\r\n")] @@ -414,6 +445,37 @@ public void ShouldAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFile }); } + + [TestCase("cs", "[assembly: AssemblyFileVersion(\"1.0.0.0\")]")] + [TestCase("fs", "[]")] + [TestCase("vb", "")] + [Category("NoMono")] + [Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")] + public void ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded(string fileExtension, string assemblyFileContent) + { + var workingDir = Path.GetTempPath(); + var fileName = Path.Combine(workingDir, "AssemblyInfo." + fileExtension); + + VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fileSystem, variables) => + { + var args = new Arguments + { + UpdateAssemblyInfo = true, + ExcludeUpdateAssemblyVersion = true, + UpdateAssemblyInfoFileName = new HashSet + { + "AssemblyInfo." + fileExtension + } + }; + + using (new AssemblyInfoFileUpdate(args, workingDir, variables, fileSystem)) + { + assemblyFileContent = fileSystem.ReadAllText(fileName); + assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension))); + } + }); + } + private static void VerifyAssemblyInfoFile( string assemblyFileContent, string fileName, diff --git a/src/GitVersionExe/ArgumentParser.cs b/src/GitVersionExe/ArgumentParser.cs index 2f00922a4a..4cb4f98739 100644 --- a/src/GitVersionExe/ArgumentParser.cs +++ b/src/GitVersionExe/ArgumentParser.cs @@ -186,6 +186,24 @@ public static Arguments ParseArguments(List commandLineArguments) continue; } + if (name.IsSwitch("excludeUpdateAssemblyVersion")) + { + if (value.IsTrue()) + { + arguments.ExcludeUpdateAssemblyVersion = true; + } + else if (value.IsFalse()) + { + arguments.ExcludeUpdateAssemblyVersion = false; + } + else + { + arguments.ExcludeUpdateAssemblyVersion = true; + } + + continue; + } + if (name.IsSwitch("assemblyversionformat")) { throw new WarningException("assemblyversionformat switch removed, use AssemblyVersioningScheme configuration value instead"); diff --git a/src/GitVersionExe/Arguments.cs b/src/GitVersionExe/Arguments.cs index 605f7ab413..0d09b64f10 100644 --- a/src/GitVersionExe/Arguments.cs +++ b/src/GitVersionExe/Arguments.cs @@ -37,6 +37,7 @@ public Arguments() public string ExecArgs; public bool UpdateAssemblyInfo; + public bool ExcludeUpdateAssemblyVersion; public ISet UpdateAssemblyInfoFileName; public bool EnsureAssemblyInfo; diff --git a/src/GitVersionExe/AssemblyInfoFileUpdate.cs b/src/GitVersionExe/AssemblyInfoFileUpdate.cs index 4646ad7dda..5683731355 100644 --- a/src/GitVersionExe/AssemblyInfoFileUpdate.cs +++ b/src/GitVersionExe/AssemblyInfoFileUpdate.cs @@ -48,7 +48,10 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, VersionVa cleanupBackupTasks.Add(() => fileSystem.Delete(backupAssemblyInfo)); var fileContents = fileSystem.ReadAllText(assemblyInfoFile.FullName); - fileContents = ReplaceOrAppend(assemblyVersionRegex, fileContents, assemblyVersionString, assemblyInfoFile.Extension); + if (!args.ExcludeUpdateAssemblyVersion) + { + fileContents = ReplaceOrAppend(assemblyVersionRegex, fileContents, assemblyVersionString, assemblyInfoFile.Extension); + } fileContents = ReplaceOrAppend(assemblyInfoVersionRegex, fileContents, assemblyInfoVersionString, assemblyInfoFile.Extension); fileContents = ReplaceOrAppend(assemblyFileVersionRegex, fileContents, assemblyFileVersionString, assemblyInfoFile.Extension); From 477a7fc90d6705f95218da6825de1c57451e08e3 Mon Sep 17 00:00:00 2001 From: Oren Novotny Date: Sat, 2 Jul 2016 15:49:35 -0400 Subject: [PATCH 2/8] update docs --- docs/usage/command-line.md | 7 +++++++ src/GitVersionExe/HelpWriter.cs | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/usage/command-line.md b/docs/usage/command-line.md index 01e7636731..18dc19f083 100644 --- a/docs/usage/command-line.md +++ b/docs/usage/command-line.md @@ -36,6 +36,8 @@ This can be done for *.cs, *.vb and *.fs files. When requesting that GitVersion generate an assembly info file you are limited to only specifying a single `` within the `/updateassemblyinfo` switch, this is to prevent the creation of mulitple assembly info files with the same assembly version attributes. If this occurs your build will fail. +Optionally, you can have GitVersion skip/ignore an `AssemblyVersion` attribute with the `/excludeUpdateAssemblyVersion` switch. This may be useful in cases where strict control is needed over the `AssemblyVersion` for binding redirects. + ### Example: When AssemblyInfo.cs does not exist `GitVersion.exe /updateassemblyinfo AssemblyInfo.cs /ensureassemblyinfo` @@ -46,6 +48,11 @@ A file is generated that contains version attributes (`AssemblyVersion`, `Assemb All known attributes (`AssemblyVersion`, `AssemblyFileVersion`, `AssemblyInformationalVersion`) will be updated +### Example: When AssemblyInfo.cs already exists +`GitVersion.exe /updateassemblyinfo AssemblyInfo.cs /ensureassemblyinfo /excludeUpdateAssemblyVersion` + +Some attributes (`AssemblyFileVersion`, `AssemblyInformationalVersion`) will be updated, `AssemblyVersion` will be ignored. + ### Example: When AssemblyInfo.cs and AssemblyVersionInfo.cs do not exist `GitVersion.exe /updateassemblyinfo AssemblyInfo.cs AssemblyVersionInfo.cs /ensureassemblyinfo` diff --git a/src/GitVersionExe/HelpWriter.cs b/src/GitVersionExe/HelpWriter.cs index 0f54351b57..2430b0355c 100644 --- a/src/GitVersionExe/HelpWriter.cs +++ b/src/GitVersionExe/HelpWriter.cs @@ -31,11 +31,13 @@ path The directory containing .git. If not defined current directory # AssemblyInfo updating /updateassemblyinfo Will recursively search for all 'AssemblyInfo.cs' files in the git repo and update them + /excludeUpdateAssemblyVersion + Will exclude adding or updating the AssemblyVersion attribute when updating assembly info files /updateassemblyinfofilename Specify name of AssemblyInfo file. Can also /updateAssemblyInfo GlobalAssemblyInfo.cs as a shorthand /ensureassemblyinfo If the assembly info file specified with /updateassemblyinfo or /updateassemblyinfofilename is not found, - it be created with these attributes: AssemblyFileVersion, FileVersion and AssemblyInformationalVersion + it be created with these attributes: AssemblyFileVersion, AssemblyVersion and AssemblyInformationalVersion --- Supports writing version info for: C#, F#, VB # Remote repository args From af287064f4fd20472603ba2f53e04d6338012e9c Mon Sep 17 00:00:00 2001 From: Oren Novotny Date: Sat, 2 Jul 2016 16:07:06 -0400 Subject: [PATCH 3/8] rename files to what they should be --- ...rsionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt} | 0 ...ests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt} | 0 ...rsionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt} | 0 ...ests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt} | 0 ...rsionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt} | 0 ...ests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt} | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename src/GitVersionExe.Tests/Approved/cs/{AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt => AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/cs/{AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt => AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/fs/{AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt => AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/fs/{AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt => AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/vb/{AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt => AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/vb/{AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt => AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt} (100%) diff --git a/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt rename to src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt rename to src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt rename to src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt rename to src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.received.txt rename to src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt b/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.received.txt rename to src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt From b080a26b585eeaac2be442997f0a3fb02f2c05b2 Mon Sep 17 00:00:00 2001 From: Oren Novotny Date: Sat, 2 Jul 2016 16:15:47 -0400 Subject: [PATCH 4/8] update test as casing is not all lower --- src/GitVersionExe.Tests/HelpWriterTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/GitVersionExe.Tests/HelpWriterTests.cs b/src/GitVersionExe.Tests/HelpWriterTests.cs index eb5a5ef6bc..839fe0e0e7 100644 --- a/src/GitVersionExe.Tests/HelpWriterTests.cs +++ b/src/GitVersionExe.Tests/HelpWriterTests.cs @@ -16,6 +16,7 @@ public void AllArgsAreInHelp() { "TargetBranch", "/b" }, { "LogFilePath" , "/l" }, { "DynamicRepositoryLocation" , "/dynamicRepoLocation" }, + { "ExcludeUpdateAssemblyVersion" , "/excludeUpdateAssemblyVersion" }, { "IsHelp", "/?" } }; string helpText = null; From d4aa6e82e8e75283bdf87f39541fc6d331fbf5e0 Mon Sep 17 00:00:00 2001 From: Oren Novotny Date: Sun, 3 Jul 2016 15:54:11 -0400 Subject: [PATCH 5/8] Use AssemblyVersioningScheme.None in configuration rather than command-line switch --- src/GitVersionCore/AssemblyVersioningScheme.cs | 3 ++- .../AssemblyVersionsGenerator.cs | 2 ++ .../AssemblyVersioningSchemeSetting.cs | 8 +++++++- src/GitVersionExe.Tests/ArgumentParserTests.cs | 9 --------- .../AssemblyInfoFileUpdateTests.cs | 10 ++++------ src/GitVersionExe.Tests/HelpWriterTests.cs | 1 - src/GitVersionExe/ArgumentParser.cs | 18 ------------------ src/GitVersionExe/Arguments.cs | 1 - src/GitVersionExe/AssemblyInfoFileUpdate.cs | 4 ++-- src/GitVersionExe/HelpWriter.cs | 2 -- 10 files changed, 17 insertions(+), 41 deletions(-) diff --git a/src/GitVersionCore/AssemblyVersioningScheme.cs b/src/GitVersionCore/AssemblyVersioningScheme.cs index 87cc4259a7..9a77fa380d 100644 --- a/src/GitVersionCore/AssemblyVersioningScheme.cs +++ b/src/GitVersionCore/AssemblyVersioningScheme.cs @@ -5,6 +5,7 @@ public enum AssemblyVersioningScheme MajorMinorPatchTag, MajorMinorPatch, MajorMinor, - Major + Major, + None } } \ No newline at end of file diff --git a/src/GitVersionCore/AssemblyVersionsGenerator.cs b/src/GitVersionCore/AssemblyVersionsGenerator.cs index 0010013d57..7fbf5778a6 100644 --- a/src/GitVersionCore/AssemblyVersionsGenerator.cs +++ b/src/GitVersionCore/AssemblyVersionsGenerator.cs @@ -18,6 +18,8 @@ public static string GetAssemblyVersion( return string.Format("{0}.{1}.{2}.0", sv.Major, sv.Minor, sv.Patch); case AssemblyVersioningScheme.MajorMinorPatchTag: return string.Format("{0}.{1}.{2}.{3}", sv.Major, sv.Minor, sv.Patch, sv.PreReleaseTag.Number ?? 0); + case AssemblyVersioningScheme.None: + return null; default: throw new ArgumentException(string.Format("Unexpected value ({0}).", scheme), "scheme"); } diff --git a/src/GitVersionCore/Configuration/Init/SetConfig/AssemblyVersioningSchemeSetting.cs b/src/GitVersionCore/Configuration/Init/SetConfig/AssemblyVersioningSchemeSetting.cs index 9f426a4f43..ebabdd1bec 100644 --- a/src/GitVersionCore/Configuration/Init/SetConfig/AssemblyVersioningSchemeSetting.cs +++ b/src/GitVersionCore/Configuration/Init/SetConfig/AssemblyVersioningSchemeSetting.cs @@ -33,6 +33,10 @@ protected override StepResult HandleResult(string result, Queue")] [Category("NoMono")] [Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")] - public void ShouldNotReplaceAssemblyVersionWhenExcluded(string fileExtension, string assemblyFileContent) + public void ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone(string fileExtension, string assemblyFileContent) { var workingDir = Path.GetTempPath(); var fileName = Path.Combine(workingDir, "AssemblyInfo." + fileExtension); - VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fileSystem, variables) => + VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.None, verify: (fileSystem, variables) => { var args = new Arguments { UpdateAssemblyInfo = true, - ExcludeUpdateAssemblyVersion = true, UpdateAssemblyInfoFileName = new HashSet { "AssemblyInfo." + fileExtension @@ -451,17 +450,16 @@ public void ShouldAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFile [TestCase("vb", "")] [Category("NoMono")] [Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")] - public void ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded(string fileExtension, string assemblyFileContent) + public void ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone(string fileExtension, string assemblyFileContent) { var workingDir = Path.GetTempPath(); var fileName = Path.Combine(workingDir, "AssemblyInfo." + fileExtension); - VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fileSystem, variables) => + VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.None, verify: (fileSystem, variables) => { var args = new Arguments { UpdateAssemblyInfo = true, - ExcludeUpdateAssemblyVersion = true, UpdateAssemblyInfoFileName = new HashSet { "AssemblyInfo." + fileExtension diff --git a/src/GitVersionExe.Tests/HelpWriterTests.cs b/src/GitVersionExe.Tests/HelpWriterTests.cs index 839fe0e0e7..eb5a5ef6bc 100644 --- a/src/GitVersionExe.Tests/HelpWriterTests.cs +++ b/src/GitVersionExe.Tests/HelpWriterTests.cs @@ -16,7 +16,6 @@ public void AllArgsAreInHelp() { "TargetBranch", "/b" }, { "LogFilePath" , "/l" }, { "DynamicRepositoryLocation" , "/dynamicRepoLocation" }, - { "ExcludeUpdateAssemblyVersion" , "/excludeUpdateAssemblyVersion" }, { "IsHelp", "/?" } }; string helpText = null; diff --git a/src/GitVersionExe/ArgumentParser.cs b/src/GitVersionExe/ArgumentParser.cs index 4cb4f98739..2f00922a4a 100644 --- a/src/GitVersionExe/ArgumentParser.cs +++ b/src/GitVersionExe/ArgumentParser.cs @@ -186,24 +186,6 @@ public static Arguments ParseArguments(List commandLineArguments) continue; } - if (name.IsSwitch("excludeUpdateAssemblyVersion")) - { - if (value.IsTrue()) - { - arguments.ExcludeUpdateAssemblyVersion = true; - } - else if (value.IsFalse()) - { - arguments.ExcludeUpdateAssemblyVersion = false; - } - else - { - arguments.ExcludeUpdateAssemblyVersion = true; - } - - continue; - } - if (name.IsSwitch("assemblyversionformat")) { throw new WarningException("assemblyversionformat switch removed, use AssemblyVersioningScheme configuration value instead"); diff --git a/src/GitVersionExe/Arguments.cs b/src/GitVersionExe/Arguments.cs index 0d09b64f10..605f7ab413 100644 --- a/src/GitVersionExe/Arguments.cs +++ b/src/GitVersionExe/Arguments.cs @@ -37,7 +37,6 @@ public Arguments() public string ExecArgs; public bool UpdateAssemblyInfo; - public bool ExcludeUpdateAssemblyVersion; public ISet UpdateAssemblyInfoFileName; public bool EnsureAssemblyInfo; diff --git a/src/GitVersionExe/AssemblyInfoFileUpdate.cs b/src/GitVersionExe/AssemblyInfoFileUpdate.cs index 5683731355..45196974cb 100644 --- a/src/GitVersionExe/AssemblyInfoFileUpdate.cs +++ b/src/GitVersionExe/AssemblyInfoFileUpdate.cs @@ -26,7 +26,7 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, VersionVa var assemblyVersion = variables.AssemblySemVer; var assemblyVersionRegex = new Regex(@"AssemblyVersion\s*\(\s*""[^""]*""\s*\)"); - var assemblyVersionString = string.Format("AssemblyVersion(\"{0}\")", assemblyVersion); + var assemblyVersionString = assemblyVersion != null ? string.Format("AssemblyVersion(\"{0}\")", assemblyVersion) : null; var assemblyInfoVersion = variables.InformationalVersion; var assemblyInfoVersionRegex = new Regex(@"AssemblyInformationalVersion\s*\(\s*""[^""]*""\s*\)"); var assemblyInfoVersionString = string.Format("AssemblyInformationalVersion(\"{0}\")", assemblyInfoVersion); @@ -48,7 +48,7 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, VersionVa cleanupBackupTasks.Add(() => fileSystem.Delete(backupAssemblyInfo)); var fileContents = fileSystem.ReadAllText(assemblyInfoFile.FullName); - if (!args.ExcludeUpdateAssemblyVersion) + if (assemblyVersion != null) { fileContents = ReplaceOrAppend(assemblyVersionRegex, fileContents, assemblyVersionString, assemblyInfoFile.Extension); } diff --git a/src/GitVersionExe/HelpWriter.cs b/src/GitVersionExe/HelpWriter.cs index 2430b0355c..b1041f04ee 100644 --- a/src/GitVersionExe/HelpWriter.cs +++ b/src/GitVersionExe/HelpWriter.cs @@ -31,8 +31,6 @@ path The directory containing .git. If not defined current directory # AssemblyInfo updating /updateassemblyinfo Will recursively search for all 'AssemblyInfo.cs' files in the git repo and update them - /excludeUpdateAssemblyVersion - Will exclude adding or updating the AssemblyVersion attribute when updating assembly info files /updateassemblyinfofilename Specify name of AssemblyInfo file. Can also /updateAssemblyInfo GlobalAssemblyInfo.cs as a shorthand /ensureassemblyinfo From 338972501538cd3fe8ff9b3f2fb3f427364e961c Mon Sep 17 00:00:00 2001 From: Oren Novotny Date: Sun, 3 Jul 2016 16:05:22 -0400 Subject: [PATCH 6/8] rename approval files to match test names --- ...datingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt} | 0 ...NotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt} | 0 ...datingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt} | 0 ...NotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt} | 0 ...datingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt} | 0 ...NotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt} | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename src/GitVersionExe.Tests/Approved/cs/{AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt => AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/cs/{AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt => AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/fs/{AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt => AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/fs/{AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt => AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/vb/{AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt => AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt} (100%) rename src/GitVersionExe.Tests/Approved/vb/{AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt => AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt} (100%) diff --git a/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt b/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt rename to src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt b/src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt rename to src/GitVersionExe.Tests/Approved/cs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt b/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt rename to src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt b/src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt rename to src/GitVersionExe.Tests/Approved/fs/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt b/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded.approved.txt rename to src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenVersionSchemeIsNone.approved.txt diff --git a/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt b/src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt similarity index 100% rename from src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenExcluded.approved.txt rename to src/GitVersionExe.Tests/Approved/vb/AssemblyInfoFileUpdateTests.ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone.approved.txt From 9fbab2001e51eb3256ea7eb9934cd8948cf98eca Mon Sep 17 00:00:00 2001 From: Oren Novotny Date: Sun, 3 Jul 2016 16:05:31 -0400 Subject: [PATCH 7/8] Update docs --- docs/configuration.md | 2 +- docs/usage/command-line.md | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 7d1bf22672..bea563f6e1 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -18,7 +18,7 @@ The global configuration options are: - **`next-version:`** Allows you to bump the next version explicitly, useful for bumping `master` or a feature with breaking changes a major increment. - - **`assembly-versioning-scheme:`** When updating assembly info tells GitVersion how to treat the `AssemblyVersion` attribute. Useful to lock the major when using Strong Naming. + - **`assembly-versioning-scheme:`** When updating assembly info tells GitVersion how to treat the `AssemblyVersion` attribute. Useful to lock the major when using Strong Naming. Note: you can use `None` to skip updating the `AssemblyVersion` while still updating the `AssemblyFileVersion` and `AssemblyInformationVersion` attributes. - **`assembly-informational-format:`** Set this to any of the available [variables](/more-info/variables) to change the value of the `AssemblyInformationalVersion` attribute. Default set to `{InformationalVersion}`. It also supports string interpolation (`{MajorMinorPatch}+{Branch}`) diff --git a/docs/usage/command-line.md b/docs/usage/command-line.md index 18dc19f083..01e7636731 100644 --- a/docs/usage/command-line.md +++ b/docs/usage/command-line.md @@ -36,8 +36,6 @@ This can be done for *.cs, *.vb and *.fs files. When requesting that GitVersion generate an assembly info file you are limited to only specifying a single `` within the `/updateassemblyinfo` switch, this is to prevent the creation of mulitple assembly info files with the same assembly version attributes. If this occurs your build will fail. -Optionally, you can have GitVersion skip/ignore an `AssemblyVersion` attribute with the `/excludeUpdateAssemblyVersion` switch. This may be useful in cases where strict control is needed over the `AssemblyVersion` for binding redirects. - ### Example: When AssemblyInfo.cs does not exist `GitVersion.exe /updateassemblyinfo AssemblyInfo.cs /ensureassemblyinfo` @@ -48,11 +46,6 @@ A file is generated that contains version attributes (`AssemblyVersion`, `Assemb All known attributes (`AssemblyVersion`, `AssemblyFileVersion`, `AssemblyInformationalVersion`) will be updated -### Example: When AssemblyInfo.cs already exists -`GitVersion.exe /updateassemblyinfo AssemblyInfo.cs /ensureassemblyinfo /excludeUpdateAssemblyVersion` - -Some attributes (`AssemblyFileVersion`, `AssemblyInformationalVersion`) will be updated, `AssemblyVersion` will be ignored. - ### Example: When AssemblyInfo.cs and AssemblyVersionInfo.cs do not exist `GitVersion.exe /updateassemblyinfo AssemblyInfo.cs AssemblyVersionInfo.cs /ensureassemblyinfo` From 2ffc19ed5c90a7bb3f99f6acb2ffa0d18dba13fc Mon Sep 17 00:00:00 2001 From: Oren Novotny Date: Sun, 3 Jul 2016 16:22:25 -0400 Subject: [PATCH 8/8] be more robust and handle empty strings the same as null --- src/GitVersionExe/AssemblyInfoFileUpdate.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitVersionExe/AssemblyInfoFileUpdate.cs b/src/GitVersionExe/AssemblyInfoFileUpdate.cs index 45196974cb..a8de25f99d 100644 --- a/src/GitVersionExe/AssemblyInfoFileUpdate.cs +++ b/src/GitVersionExe/AssemblyInfoFileUpdate.cs @@ -26,7 +26,7 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, VersionVa var assemblyVersion = variables.AssemblySemVer; var assemblyVersionRegex = new Regex(@"AssemblyVersion\s*\(\s*""[^""]*""\s*\)"); - var assemblyVersionString = assemblyVersion != null ? string.Format("AssemblyVersion(\"{0}\")", assemblyVersion) : null; + var assemblyVersionString = !string.IsNullOrWhiteSpace(assemblyVersion) ? string.Format("AssemblyVersion(\"{0}\")", assemblyVersion) : null; var assemblyInfoVersion = variables.InformationalVersion; var assemblyInfoVersionRegex = new Regex(@"AssemblyInformationalVersion\s*\(\s*""[^""]*""\s*\)"); var assemblyInfoVersionString = string.Format("AssemblyInformationalVersion(\"{0}\")", assemblyInfoVersion); @@ -48,7 +48,7 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, VersionVa cleanupBackupTasks.Add(() => fileSystem.Delete(backupAssemblyInfo)); var fileContents = fileSystem.ReadAllText(assemblyInfoFile.FullName); - if (assemblyVersion != null) + if (!string.IsNullOrWhiteSpace(assemblyVersion)) { fileContents = ReplaceOrAppend(assemblyVersionRegex, fileContents, assemblyVersionString, assemblyInfoFile.Extension); }