Add VersionAssemblyName to package manifest (#14046)
* Add VersionAssemblyName to package manifest * Fix/improve nullability * Ensure package version from manifest is set when package migration exists * Set versionAssemblyName in umbracopackage template * Use Assembly.Load instead of ITypeFinder * Use AssemblyLoadContext to get asesmbly by name * Get version from package migration assembly * Hide unknown package version * Set versionAssemblyName in umbracopackage-rcl template
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
// Copyright (c) Umbraco.
|
||||
// See LICENSE for more details.
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Reflection;
|
||||
using Umbraco.Cms.Core.Semver;
|
||||
|
||||
namespace Umbraco.Extensions;
|
||||
|
||||
@@ -104,4 +106,35 @@ public static class AssemblyExtensions
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the assembly informational version for the specified <paramref name="assembly" />.
|
||||
/// </summary>
|
||||
/// <param name="assembly">The assembly.</param>
|
||||
/// <param name="version">The assembly version.</param>
|
||||
/// <returns>
|
||||
/// <c>true</c> if the assembly information version is retrieved; otherwise, <c>false</c>.
|
||||
/// </returns>
|
||||
public static bool TryGetInformationalVersion(this Assembly assembly, [NotNullWhen(true)] out string? version)
|
||||
{
|
||||
AssemblyInformationalVersionAttribute? assemblyInformationalVersionAttribute = assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>();
|
||||
if (assemblyInformationalVersionAttribute is not null &&
|
||||
SemVersion.TryParse(assemblyInformationalVersionAttribute.InformationalVersion, out SemVersion? semVersion))
|
||||
{
|
||||
version = semVersion.ToSemanticStringWithoutBuild();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
AssemblyName assemblyName = assembly.GetName();
|
||||
if (assemblyName.Version is not null)
|
||||
{
|
||||
version = assemblyName.Version.ToString(3);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
version = null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user