diff --git a/Directory.Build.props b/Directory.Build.props
index 76f35e297e..4aa72f3e81 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -7,8 +7,6 @@
Bit.$(MSBuildProjectName)
enable
- false
-
true
annotations
enable
@@ -32,19 +30,4 @@
4.18.1
-
-
-
-
-
-
-
-
-
-
- <_Parameter1>GitHash
- <_Parameter2>$(SourceRevisionId)
-
-
-
\ No newline at end of file
diff --git a/src/Core/Utilities/AssemblyHelpers.cs b/src/Core/Utilities/AssemblyHelpers.cs
index 0cc01efdf3..03f7ff986d 100644
--- a/src/Core/Utilities/AssemblyHelpers.cs
+++ b/src/Core/Utilities/AssemblyHelpers.cs
@@ -1,46 +1,46 @@
-// FIXME: Update this file to be null safe and then delete the line below
-#nullable disable
-
+using System.Diagnostics;
using System.Reflection;
namespace Bit.Core.Utilities;
public static class AssemblyHelpers
{
- private static readonly IEnumerable _assemblyMetadataAttributes;
- private static readonly AssemblyInformationalVersionAttribute _assemblyInformationalVersionAttributes;
- private const string GIT_HASH_ASSEMBLY_KEY = "GitHash";
- private static string _version;
- private static string _gitHash;
+ private static string? _version;
+ private static string? _gitHash;
static AssemblyHelpers()
{
- _assemblyMetadataAttributes = Assembly.GetEntryAssembly().GetCustomAttributes();
- _assemblyInformationalVersionAttributes = Assembly.GetEntryAssembly().GetCustomAttribute();
- }
-
- public static string GetVersion()
- {
- if (string.IsNullOrWhiteSpace(_version))
+ var assemblyInformationalVersionAttribute = typeof(AssemblyHelpers).Assembly.GetCustomAttribute();
+ if (assemblyInformationalVersionAttribute == null)
{
- _version = _assemblyInformationalVersionAttributes.InformationalVersion;
+ Debug.Fail("The AssemblyInformationalVersionAttribute is expected to exist in this assembly, possibly its generation was turned off.");
+ return;
}
+ var informationalVersion = assemblyInformationalVersionAttribute.InformationalVersion.AsSpan();
+
+ if (!informationalVersion.TrySplitBy('+', out var version, out var gitHash))
+ {
+ // Treat the whole thing as the version
+ _version = informationalVersion.ToString();
+ return;
+ }
+
+ _version = version.ToString();
+ if (gitHash.Length < 8)
+ {
+ return;
+ }
+ _gitHash = gitHash[..8].ToString();
+ }
+
+ public static string? GetVersion()
+ {
return _version;
}
- public static string GetGitHash()
+ public static string? GetGitHash()
{
- if (string.IsNullOrWhiteSpace(_gitHash))
- {
- try
- {
- _gitHash = _assemblyMetadataAttributes.Where(i => i.Key == GIT_HASH_ASSEMBLY_KEY).First().Value;
- }
- catch (Exception)
- { }
- }
-
return _gitHash;
}
}
diff --git a/test/Core.Test/Utilities/AssemblyHelpersTests.cs b/test/Core.Test/Utilities/AssemblyHelpersTests.cs
new file mode 100644
index 0000000000..463deb54a1
--- /dev/null
+++ b/test/Core.Test/Utilities/AssemblyHelpersTests.cs
@@ -0,0 +1,18 @@
+using Bit.Core.Utilities;
+using Xunit;
+
+namespace Bit.Core.Test.Utilities;
+
+public class AssemblyHelpersTests
+{
+ [Fact]
+ public void ReturnsValidVersionAndGitHash()
+ {
+ var version = AssemblyHelpers.GetVersion();
+ _ = Version.Parse(version);
+
+ var gitHash = AssemblyHelpers.GetGitHash();
+ Assert.NotNull(gitHash);
+ Assert.Equal(8, gitHash.Length);
+ }
+}