diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 7e3a698c..4b7369cc 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -7,10 +7,10 @@
true
5.0
true
-
low
+ all
- 2.1.2
+ 2.1.3
0024000004800000940000000602000000240000525341310004000001000100dde965e6172e019ac82c2639ffe494dd2e7dd16347c34762a05732b492e110f2e4e2e1b5ef2d85c848ccfb671ee20a47c8d1376276708dc30a90ff1121b647ba3b7259a6bc383b2034938ef0e275b58b920375ac605076178123693c6c4f1331661a62eba28c249386855637780e3ff5f23a6d854700eaa6803ef48907513b92
00240000048000009400000006020000002400005253413100040000010001007f16e21368ff041183fab592d9e8ed37e7be355e93323147a1d29983d6e591b04282e4da0c9e18bd901e112c0033925eb7d7872c2f1706655891c5c9d57297994f707d16ee9a8f40d978f064ee1ffc73c0db3f4712691b23bf596f75130f4ec978cf78757ec034625a5f27e6bb50c618931ea49f6f628fd74271c32959efb1c5
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
index d47a6af6..98966408 100644
--- a/src/Directory.Build.targets
+++ b/src/Directory.Build.targets
@@ -1,7 +1,5 @@
-
- all
-
+
diff --git a/src/NServiceBus.Storage.MongoDB.AcceptanceTests/NServiceBus.Storage.MongoDB.AcceptanceTests.csproj b/src/NServiceBus.Storage.MongoDB.AcceptanceTests/NServiceBus.Storage.MongoDB.AcceptanceTests.csproj
index 62fc96f5..ac825ca0 100644
--- a/src/NServiceBus.Storage.MongoDB.AcceptanceTests/NServiceBus.Storage.MongoDB.AcceptanceTests.csproj
+++ b/src/NServiceBus.Storage.MongoDB.AcceptanceTests/NServiceBus.Storage.MongoDB.AcceptanceTests.csproj
@@ -9,12 +9,11 @@
-
-
-
+
+
+
-
-
+
\ No newline at end of file
diff --git a/src/NServiceBus.Storage.MongoDB.NoTx.AcceptanceTests/NServiceBus.Storage.MongoDB.NoTx.AcceptanceTests.csproj b/src/NServiceBus.Storage.MongoDB.NoTx.AcceptanceTests/NServiceBus.Storage.MongoDB.NoTx.AcceptanceTests.csproj
index 62fc96f5..ac825ca0 100644
--- a/src/NServiceBus.Storage.MongoDB.NoTx.AcceptanceTests/NServiceBus.Storage.MongoDB.NoTx.AcceptanceTests.csproj
+++ b/src/NServiceBus.Storage.MongoDB.NoTx.AcceptanceTests/NServiceBus.Storage.MongoDB.NoTx.AcceptanceTests.csproj
@@ -9,12 +9,11 @@
-
-
-
+
+
+
-
-
+
\ No newline at end of file
diff --git a/src/NServiceBus.Storage.MongoDB.PersistenceTests/NServiceBus.Storage.MongoDB.PersistenceTests.csproj b/src/NServiceBus.Storage.MongoDB.PersistenceTests/NServiceBus.Storage.MongoDB.PersistenceTests.csproj
index 3fd1f55b..c68c5e60 100644
--- a/src/NServiceBus.Storage.MongoDB.PersistenceTests/NServiceBus.Storage.MongoDB.PersistenceTests.csproj
+++ b/src/NServiceBus.Storage.MongoDB.PersistenceTests/NServiceBus.Storage.MongoDB.PersistenceTests.csproj
@@ -2,6 +2,7 @@
net481;net8.0
+ 10.0
@@ -9,12 +10,11 @@
-
-
-
+
+
+
-
-
+
\ No newline at end of file
diff --git a/src/NServiceBus.Storage.MongoDB.Tests/NServiceBus.Storage.MongoDB.Tests.csproj b/src/NServiceBus.Storage.MongoDB.Tests/NServiceBus.Storage.MongoDB.Tests.csproj
index d337e8da..11f81ae6 100644
--- a/src/NServiceBus.Storage.MongoDB.Tests/NServiceBus.Storage.MongoDB.Tests.csproj
+++ b/src/NServiceBus.Storage.MongoDB.Tests/NServiceBus.Storage.MongoDB.Tests.csproj
@@ -10,14 +10,12 @@
-
-
-
-
+
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/src/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests.csproj b/src/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests.csproj
index 4451e04a..a96e328b 100644
--- a/src/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests.csproj
+++ b/src/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests.csproj
@@ -8,17 +8,15 @@
-
-
-
-
-
-
-
+
-
+
+
+
+
+
diff --git a/src/NServiceBus.Storage.MongoDB.TransactionalSession.Tests/NServiceBus.Storage.MongoDB.TransactionalSession.Tests.csproj b/src/NServiceBus.Storage.MongoDB.TransactionalSession.Tests/NServiceBus.Storage.MongoDB.TransactionalSession.Tests.csproj
index 676ccbcd..f47d2ba2 100644
--- a/src/NServiceBus.Storage.MongoDB.TransactionalSession.Tests/NServiceBus.Storage.MongoDB.TransactionalSession.Tests.csproj
+++ b/src/NServiceBus.Storage.MongoDB.TransactionalSession.Tests/NServiceBus.Storage.MongoDB.TransactionalSession.Tests.csproj
@@ -6,20 +6,19 @@
-
-
-
-
+
-
-
-
+
+
+
+
-
+
+
diff --git a/src/NServiceBus.Storage.MongoDB.TransactionalSession/NServiceBus.Storage.MongoDB.TransactionalSession.csproj b/src/NServiceBus.Storage.MongoDB.TransactionalSession/NServiceBus.Storage.MongoDB.TransactionalSession.csproj
index 768be796..b7e1ac0c 100644
--- a/src/NServiceBus.Storage.MongoDB.TransactionalSession/NServiceBus.Storage.MongoDB.TransactionalSession.csproj
+++ b/src/NServiceBus.Storage.MongoDB.TransactionalSession/NServiceBus.Storage.MongoDB.TransactionalSession.csproj
@@ -9,12 +9,12 @@
-
-
+
-
+
+
\ No newline at end of file
diff --git a/src/NServiceBus.Storage.MongoDB/NServiceBus.Storage.MongoDB.csproj b/src/NServiceBus.Storage.MongoDB/NServiceBus.Storage.MongoDB.csproj
index f0ab4b74..6987b09a 100644
--- a/src/NServiceBus.Storage.MongoDB/NServiceBus.Storage.MongoDB.csproj
+++ b/src/NServiceBus.Storage.MongoDB/NServiceBus.Storage.MongoDB.csproj
@@ -6,9 +6,9 @@
-
-
-
+
+
+
\ No newline at end of file
diff --git a/src/msbuild/AutomaticVersionRanges.targets b/src/msbuild/AutomaticVersionRanges.targets
new file mode 100644
index 00000000..97372103
--- /dev/null
+++ b/src/msbuild/AutomaticVersionRanges.targets
@@ -0,0 +1,42 @@
+
+
+
+ false
+ false
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+ @(_ProjectReferencesWithVersions->Count())
+
+
+
+
+
+ <_ProjectReferencesWithVersions Remove="@(_ProjectReferencesWithVersions)" />
+ <_ProjectReferencesWithVersions Include="@(_ProjectReferencesWithVersionRanges)" />
+
+
+
+
+
+ @(PackageReference->Count())
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/msbuild/ConvertToVersionRange.cs b/src/msbuild/ConvertToVersionRange.cs
new file mode 100644
index 00000000..d9184784
--- /dev/null
+++ b/src/msbuild/ConvertToVersionRange.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Text.RegularExpressions;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+
+public class ConvertToVersionRange : Task
+{
+ [Required]
+ public ITaskItem[] References { get; set; } = [];
+
+ [Required]
+ public string VersionProperty { get; set; } = string.Empty;
+
+ [Output]
+ public ITaskItem[] ReferencesWithVersionRanges { get; private set; } = [];
+
+ public override bool Execute()
+ {
+ var success = true;
+
+ foreach (var reference in References)
+ {
+ var automaticVersionRange = reference.GetMetadata("AutomaticVersionRange");
+
+ if (automaticVersionRange.Equals("false", StringComparison.OrdinalIgnoreCase))
+ {
+ continue;
+ }
+
+ var privateAssets = reference.GetMetadata("PrivateAssets");
+
+ if (privateAssets.Equals("All", StringComparison.OrdinalIgnoreCase))
+ {
+ continue;
+ }
+
+ var version = reference.GetMetadata(VersionProperty);
+ var match = Regex.Match(version, @"^\d+");
+
+ if (match.Value.Equals(string.Empty, StringComparison.Ordinal))
+ {
+ Log.LogError("Reference '{0}' with version '{1}' is not valid for automatic version range conversion. Fix the version or exclude the reference from conversion by setting 'AutomaticVersionRange=\"false\"' on the reference.", reference.ItemSpec, version);
+ success = false;
+ continue;
+ }
+
+ var nextMajor = Convert.ToInt32(match.Value) + 1;
+
+ var versionRange = $"[{version}, {nextMajor}.0.0)";
+ reference.SetMetadata(VersionProperty, versionRange);
+ }
+
+ ReferencesWithVersionRanges = References;
+
+ return success;
+ }
+}