diff --git a/src/SimpleBranchVersioning/AppVersionGenerator.cs b/src/SimpleBranchVersioning/AppVersionGenerator.cs
index 7cd88f5..4598a70 100644
--- a/src/SimpleBranchVersioning/AppVersionGenerator.cs
+++ b/src/SimpleBranchVersioning/AppVersionGenerator.cs
@@ -76,15 +76,21 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
provider.GlobalOptions.TryGetValue("build_property.RootNamespace", out string? rootNamespace);
provider.GlobalOptions.TryGetValue("build_property.ProjectDir", out string? projectDir);
provider.GlobalOptions.TryGetValue("build_property.IncludeCommitIdMetadata", out string? includeMetadataStr);
+ provider.GlobalOptions.TryGetValue("build_property.GenerateVersionFile", out string? generateVersionFileStr);
+ provider.GlobalOptions.TryGetValue("build_property.SetPackageVersionFromBranch", out string? setPackageVersionStr);
// Parse IncludeCommitIdMetadata (default: true)
bool includeCommitIdMetadata = !string.Equals(includeMetadataStr, "false", StringComparison.OrdinalIgnoreCase);
+ // Parse GenerateVersionFile (default: false) and SetPackageVersionFromBranch (default: true)
+ bool generateVersionFile = string.Equals(generateVersionFileStr, "true", StringComparison.OrdinalIgnoreCase);
+ bool setPackageVersionFromBranch = !string.Equals(setPackageVersionStr, "false", StringComparison.OrdinalIgnoreCase);
+
// Read git info - prefer using tracked HEAD content, fallback to filesystem
var (branch, commitId) = ParseGitInfo(gitInfo.HeadContent, gitInfo.GitDir)
?? ReadGitInfo(projectDir);
- return new BuildProperties(rootNamespace, branch, commitId, includeCommitIdMetadata);
+ return new BuildProperties(rootNamespace, branch, commitId, includeCommitIdMetadata, generateVersionFile, setPackageVersionFromBranch);
});
// Look for AppVersionConfigAttribute in assembly attributes
@@ -146,9 +152,12 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
string assemblyAttributesSource = GenerateAssemblyAttributes(versionInfo);
ctx.AddSource("AssemblyVersionInfo.g.cs", SourceText.From(assemblyAttributesSource, Encoding.UTF8));
- // Generate version file writer helper (always in fixed namespace for MSBuild to find)
- string writerSource = GenerateVersionFileWriter(versionInfo, branch, commitId);
- ctx.AddSource("VersionFileWriter.g.cs", SourceText.From(writerSource, Encoding.UTF8));
+ // Generate version file writer helper only when needed (GenerateVersionFile or SetPackageVersionFromBranch)
+ if (buildProps.GenerateVersionFile || buildProps.SetPackageVersionFromBranch)
+ {
+ string writerSource = GenerateVersionFileWriter(versionInfo, branch, commitId);
+ ctx.AddSource("VersionFileWriter.g.cs", SourceText.From(writerSource, Encoding.UTF8));
+ }
});
}
@@ -395,6 +404,6 @@ private static (string? branch, string? commitId) ReadGitInfo(string? projectDir
}
#pragma warning restore RS1035
- private sealed record BuildProperties(string? RootNamespace, string? Branch, string? CommitId, bool IncludeCommitIdMetadata);
+ private sealed record BuildProperties(string? RootNamespace, string? Branch, string? CommitId, bool IncludeCommitIdMetadata, bool GenerateVersionFile, bool SetPackageVersionFromBranch);
private sealed record AppVersionConfig(string? Namespace, string? ClassName);
}
diff --git a/src/SimpleBranchVersioning/build/SimpleBranchVersioning.props b/src/SimpleBranchVersioning/build/SimpleBranchVersioning.props
index 204b53a..5fca783 100644
--- a/src/SimpleBranchVersioning/build/SimpleBranchVersioning.props
+++ b/src/SimpleBranchVersioning/build/SimpleBranchVersioning.props
@@ -16,6 +16,8 @@
+
+