diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7094b3d5f9..28643e3c2c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,12 @@
## Unreleased
+### Features
+
+- Users can now automatically create releases and associated commits via sentry-cli and MSBuild properties ([#3462](https://github.com/getsentry/sentry-dotnet/pull/3462))
+
### Fixes
+
- Race condition in `SentryMessageHandler` ([#3477](https://github.com/getsentry/sentry-dotnet/pull/3477))
## 4.9.0
diff --git a/src/Sentry/buildTransitive/Sentry.targets b/src/Sentry/buildTransitive/Sentry.targets
index 952c2e91e2..ae1b83a68c 100644
--- a/src/Sentry/buildTransitive/Sentry.targets
+++ b/src/Sentry/buildTransitive/Sentry.targets
@@ -37,12 +37,16 @@
false
false
+ false
+
+ true
+ false
true
@@ -92,6 +96,9 @@
"$(SentryCLI)"
$(SentryCLIBaseCommand) $(SentryCLIBaseOptions.Trim())
+ $(SentryReleaseOptions) --project $(SentryProject)
+ --auto
+
$(SentryCLIUploadOptions) --org $(SentryOrg)
$(SentryCLIUploadOptions) --project $(SentryProject)
$(SentryCLIBaseCommand) debug-files upload
@@ -242,5 +249,102 @@
+
+
+
+
+
+
+
+
+
+ ();
+ version = infoVersionAttribute?.InformationalVersion;
+ }
+ catch
+ {
+ Log.LogMessage($"Failed to read informational version attribute");
+ }
+ version ??= assemblyName.Version?.ToString();
+ Log.LogMessage($"Version: {version}");
+
+ Log.LogMessage($"Compiling release information...");
+ if (!string.IsNullOrWhiteSpace(name) && !string.IsNullOrWhiteSpace(version))
+ {
+ Release = version.Contains('@')
+ ? version // Don't add name prefix if it's already set by the user
+ : $"{name}@{version}";
+ }
+#nullable disable
+ }
+ catch
+ {
+ Log.LogWarning($"Failed to get version from {AssemblyPath}");
+ }
+ ]]>
+
+
+
+
+
+
+ <_SentryRelease Condition="'$(_SentryRelease)' == '' And '$(SENTRY_RELEASE)' != ''">$(SENTRY_RELEASE)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+