diff --git a/src/Umbraco.Core/Composing/Composition.cs b/src/Umbraco.Abstractions/Composing/Composition.cs similarity index 100% rename from src/Umbraco.Core/Composing/Composition.cs rename to src/Umbraco.Abstractions/Composing/Composition.cs diff --git a/src/Umbraco.Core/Composing/IComposer.cs b/src/Umbraco.Abstractions/Composing/IComposer.cs similarity index 100% rename from src/Umbraco.Core/Composing/IComposer.cs rename to src/Umbraco.Abstractions/Composing/IComposer.cs diff --git a/src/Umbraco.Core/Composing/ICoreComposer.cs b/src/Umbraco.Abstractions/Composing/ICoreComposer.cs similarity index 100% rename from src/Umbraco.Core/Composing/ICoreComposer.cs rename to src/Umbraco.Abstractions/Composing/ICoreComposer.cs diff --git a/src/Umbraco.Core/CompositionExtensions_Uniques.cs b/src/Umbraco.Abstractions/CompositionExtensions_Uniques.cs similarity index 100% rename from src/Umbraco.Core/CompositionExtensions_Uniques.cs rename to src/Umbraco.Abstractions/CompositionExtensions_Uniques.cs diff --git a/src/Umbraco.Abstractions/Configuration/ConfigsExtensions.cs b/src/Umbraco.Abstractions/Configuration/ConfigsExtensions.cs index c955cc4796..a7492fa9da 100644 --- a/src/Umbraco.Abstractions/Configuration/ConfigsExtensions.cs +++ b/src/Umbraco.Abstractions/Configuration/ConfigsExtensions.cs @@ -3,6 +3,8 @@ using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Grid; +using Umbraco.Core.Configuration.HealthChecks; +using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Manifest; @@ -14,11 +16,26 @@ namespace Umbraco.Core /// public static class ConfigsExtensions { + public static IGlobalSettings Global(this Configs configs) + => configs.GetConfig(); + + public static IUmbracoSettingsSection Settings(this Configs configs) + => configs.GetConfig(); + + public static IHealthChecks HealthChecks(this Configs configs) + => configs.GetConfig(); + + public static IGridConfig Grids(this Configs configs) + => configs.GetConfig(); + + public static ICoreDebug CoreDebug(this Configs configs) + => configs.GetConfig(); public static void AddCoreConfigs(this Configs configs, IIOHelper ioHelper) { var configDir = new DirectoryInfo(ioHelper.MapPath(Constants.SystemDirectories.Config)); + // GridConfig depends on runtime caches, manifest parsers... and cannot be available during composition configs.Add(factory => new GridConfig( factory.GetInstance(), diff --git a/src/Umbraco.Configuration/HealthChecks/HealthCheckNotificationVerbosity.cs b/src/Umbraco.Abstractions/Configuration/HealthChecks/HealthCheckNotificationVerbosity.cs similarity index 52% rename from src/Umbraco.Configuration/HealthChecks/HealthCheckNotificationVerbosity.cs rename to src/Umbraco.Abstractions/Configuration/HealthChecks/HealthCheckNotificationVerbosity.cs index 6556c19c32..95e5ca8e03 100644 --- a/src/Umbraco.Configuration/HealthChecks/HealthCheckNotificationVerbosity.cs +++ b/src/Umbraco.Abstractions/Configuration/HealthChecks/HealthCheckNotificationVerbosity.cs @@ -1,7 +1,10 @@ -namespace Umbraco.Core.Configuration.HealthChecks +using System.Runtime.Serialization; + +namespace Umbraco.Core.Configuration.HealthChecks { public enum HealthCheckNotificationVerbosity { + Summary, Detailed } diff --git a/src/Umbraco.Configuration/HealthChecks/IDisabledHealthCheck.cs b/src/Umbraco.Abstractions/Configuration/HealthChecks/IDisabledHealthCheck.cs similarity index 100% rename from src/Umbraco.Configuration/HealthChecks/IDisabledHealthCheck.cs rename to src/Umbraco.Abstractions/Configuration/HealthChecks/IDisabledHealthCheck.cs diff --git a/src/Umbraco.Configuration/HealthChecks/IHealthCheckNotificationSettings.cs b/src/Umbraco.Abstractions/Configuration/HealthChecks/IHealthCheckNotificationSettings.cs similarity index 100% rename from src/Umbraco.Configuration/HealthChecks/IHealthCheckNotificationSettings.cs rename to src/Umbraco.Abstractions/Configuration/HealthChecks/IHealthCheckNotificationSettings.cs diff --git a/src/Umbraco.Configuration/HealthChecks/IHealthChecks.cs b/src/Umbraco.Abstractions/Configuration/HealthChecks/IHealthChecks.cs similarity index 100% rename from src/Umbraco.Configuration/HealthChecks/IHealthChecks.cs rename to src/Umbraco.Abstractions/Configuration/HealthChecks/IHealthChecks.cs diff --git a/src/Umbraco.Configuration/HealthChecks/INotificationMethod.cs b/src/Umbraco.Abstractions/Configuration/HealthChecks/INotificationMethod.cs similarity index 100% rename from src/Umbraco.Configuration/HealthChecks/INotificationMethod.cs rename to src/Umbraco.Abstractions/Configuration/HealthChecks/INotificationMethod.cs diff --git a/src/Umbraco.Configuration/HealthChecks/INotificationMethodSettings.cs b/src/Umbraco.Abstractions/Configuration/HealthChecks/INotificationMethodSettings.cs similarity index 100% rename from src/Umbraco.Configuration/HealthChecks/INotificationMethodSettings.cs rename to src/Umbraco.Abstractions/Configuration/HealthChecks/INotificationMethodSettings.cs diff --git a/src/Umbraco.Abstractions/Configuration/ICoreDebug.cs b/src/Umbraco.Abstractions/Configuration/ICoreDebug.cs new file mode 100644 index 0000000000..41476f4920 --- /dev/null +++ b/src/Umbraco.Abstractions/Configuration/ICoreDebug.cs @@ -0,0 +1,8 @@ +namespace Umbraco.Core.Configuration +{ + public interface ICoreDebug + { + bool LogUncompletedScopes { get; } + bool DumpOnTimeoutThreadAbort { get; } + } +} \ No newline at end of file diff --git a/src/Umbraco.Abstractions/Configuration/IUmbracoVersion.cs b/src/Umbraco.Abstractions/Configuration/IUmbracoVersion.cs new file mode 100644 index 0000000000..1bdce0ec7c --- /dev/null +++ b/src/Umbraco.Abstractions/Configuration/IUmbracoVersion.cs @@ -0,0 +1,56 @@ +using System; +using Semver; + +namespace Umbraco.Core.Configuration +{ + public interface IUmbracoVersion + { + /// + /// Gets the non-semantic version of the Umbraco code. + /// + Version Current { get; } + + /// + /// Gets the semantic version comments of the Umbraco code. + /// + string Comment { get; } + + /// + /// Gets the assembly version of the Umbraco code. + /// + /// + /// The assembly version is the value of the . + /// Is the one that the CLR checks for compatibility. Therefore, it changes only on + /// hard-breaking changes (for instance, on new major versions). + /// + Version AssemblyVersion { get; } + + /// + /// Gets the assembly file version of the Umbraco code. + /// + /// + /// The assembly version is the value of the . + /// + Version AssemblyFileVersion { get; } + + /// + /// Gets the semantic version of the Umbraco code. + /// + /// + /// The semantic version is the value of the . + /// It is the full version of Umbraco, including comments. + /// + SemVersion SemanticVersion { get; } + + /// + /// Gets the "local" version of the site. + /// + /// + /// Three things have a version, really: the executing code, the database model, + /// and the site/files. The database model version is entirely managed via migrations, + /// and changes during an upgrade. The executing code version changes when new code is + /// deployed. The site/files version changes during an upgrade. + /// + SemVersion LocalVersion { get; } + } +} diff --git a/src/Umbraco.Configuration/UmbracoVersion.cs b/src/Umbraco.Abstractions/Configuration/UmbracoVersion.cs similarity index 76% rename from src/Umbraco.Configuration/UmbracoVersion.cs rename to src/Umbraco.Abstractions/Configuration/UmbracoVersion.cs index d7058fda01..dd96e6edd7 100644 --- a/src/Umbraco.Configuration/UmbracoVersion.cs +++ b/src/Umbraco.Abstractions/Configuration/UmbracoVersion.cs @@ -8,9 +8,17 @@ namespace Umbraco.Core.Configuration /// /// Represents the version of the executing code. /// - public static class UmbracoVersion + public class UmbracoVersion : IUmbracoVersion { - static UmbracoVersion() + private readonly IGlobalSettings _globalSettings; + + public UmbracoVersion(IGlobalSettings globalSettings) + :this() + { + _globalSettings = globalSettings; + } + + public UmbracoVersion() { var umbracoCoreAssembly = typeof(SemVersion).Assembly; @@ -32,12 +40,12 @@ namespace Umbraco.Core.Configuration /// Gets the non-semantic version of the Umbraco code. /// // TODO: rename to Version - public static Version Current { get; } + public Version Current { get; } /// /// Gets the semantic version comments of the Umbraco code. /// - public static string Comment => SemanticVersion.Prerelease; + public string Comment => SemanticVersion.Prerelease; /// /// Gets the assembly version of the Umbraco code. @@ -47,7 +55,7 @@ namespace Umbraco.Core.Configuration /// Is the one that the CLR checks for compatibility. Therefore, it changes only on /// hard-breaking changes (for instance, on new major versions). /// - public static Version AssemblyVersion {get; } + public Version AssemblyVersion {get; } /// /// Gets the assembly file version of the Umbraco code. @@ -55,7 +63,7 @@ namespace Umbraco.Core.Configuration /// /// The assembly version is the value of the . /// - public static Version AssemblyFileVersion { get; } + public Version AssemblyFileVersion { get; } /// /// Gets the semantic version of the Umbraco code. @@ -64,7 +72,7 @@ namespace Umbraco.Core.Configuration /// The semantic version is the value of the . /// It is the full version of Umbraco, including comments. /// - public static SemVersion SemanticVersion { get; } + public SemVersion SemanticVersion { get; } /// /// Gets the "local" version of the site. @@ -75,21 +83,11 @@ namespace Umbraco.Core.Configuration /// and changes during an upgrade. The executing code version changes when new code is /// deployed. The site/files version changes during an upgrade. /// - public static SemVersion LocalVersion - { + public SemVersion LocalVersion { get { - try - { - // TODO: https://github.com/umbraco/Umbraco-CMS/issues/4238 - stop having version in web.config appSettings - var value = ConfigurationManager.AppSettings[Constants.AppSettings.ConfigurationStatus]; - return value.IsNullOrWhiteSpace() ? null : SemVersion.TryParse(value, out var semver) ? semver : null; - } - catch - { - return null; - } - } - } + var value = _globalSettings.ConfigurationStatus; + return value.IsNullOrWhiteSpace() ? null : SemVersion.TryParse(value, out var semver) ? semver : null; + } } } } diff --git a/src/Umbraco.Configuration/ConfigsExtensions.cs b/src/Umbraco.Configuration/ConfigsExtensions.cs deleted file mode 100644 index 0ecfc46896..0000000000 --- a/src/Umbraco.Configuration/ConfigsExtensions.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Umbraco.Core.Configuration; -using Umbraco.Core.Configuration.Grid; -using Umbraco.Core.Configuration.HealthChecks; -using Umbraco.Core.Configuration.UmbracoSettings; - -namespace Umbraco.Core -{ - /// - /// Provides extension methods for the class. - /// - public static class ConfigsExtensions - { - public static IGlobalSettings Global(this Configs configs) - => configs.GetConfig(); - - public static IUmbracoSettingsSection Settings(this Configs configs) - => configs.GetConfig(); - - public static IHealthChecks HealthChecks(this Configs configs) - => configs.GetConfig(); - - public static IGridConfig Grids(this Configs configs) - => configs.GetConfig(); - - public static CoreDebug CoreDebug(this Configs configs) - => configs.GetConfig(); - } -} diff --git a/src/Umbraco.Configuration/ConfigurationComposer.cs b/src/Umbraco.Configuration/ConfigurationComposer.cs new file mode 100644 index 0000000000..021657876f --- /dev/null +++ b/src/Umbraco.Configuration/ConfigurationComposer.cs @@ -0,0 +1,17 @@ + +using Umbraco.Core.Composing; +using Umbraco.Core.Configuration; + +namespace Umbraco.Core.Logging.Viewer +{ + [RuntimeLevel(MinLevel = RuntimeLevel.Run)] + // ReSharper disable once UnusedMember.Global + public class ConfigurationComposer : ICoreComposer + { + public void Compose(Composition composition) + { + composition.RegisterUnique(); + } + + } +} diff --git a/src/Umbraco.Configuration/UmbracoVersionExtensions.cs b/src/Umbraco.Configuration/UmbracoVersionExtensions.cs new file mode 100644 index 0000000000..168bb16f57 --- /dev/null +++ b/src/Umbraco.Configuration/UmbracoVersionExtensions.cs @@ -0,0 +1,33 @@ +using System.Configuration; +using Semver; +using Umbraco.Core; +using Umbraco.Core.Configuration; + +namespace Umbraco.Configuration +{ + public static class UmbracoVersionExtensions + { + /// + /// Gets the "local" version of the site. + /// + /// + /// Three things have a version, really: the executing code, the database model, + /// and the site/files. The database model version is entirely managed via migrations, + /// and changes during an upgrade. The executing code version changes when new code is + /// deployed. The site/files version changes during an upgrade. + /// + public static SemVersion LocalVersion(this IUmbracoVersion umbracoVersion) + { + try + { + // TODO: https://github.com/umbraco/Umbraco-CMS/issues/4238 - stop having version in web.config appSettings + var value = ConfigurationManager.AppSettings[Constants.AppSettings.ConfigurationStatus]; + return value.IsNullOrWhiteSpace() ? null : SemVersion.TryParse(value, out var semver) ? semver : null; + } + catch + { + return null; + } + } + } +} diff --git a/src/Umbraco.Core/Composing/Current.cs b/src/Umbraco.Core/Composing/Current.cs index 3ddc0f5dc1..e70763d0cc 100644 --- a/src/Umbraco.Core/Composing/Current.cs +++ b/src/Umbraco.Core/Composing/Current.cs @@ -207,6 +207,9 @@ namespace Umbraco.Core.Composing public static readonly IIOHelper IOHelper = Umbraco.Core.IO.IOHelper.Default; + public static IUmbracoVersion UmbracoVersion + => Factory.GetInstance(); + #endregion } } diff --git a/src/Umbraco.Core/CompositionExtensions_Essentials.cs b/src/Umbraco.Core/CompositionExtensions_Essentials.cs index 20c1646629..3174f07468 100644 --- a/src/Umbraco.Core/CompositionExtensions_Essentials.cs +++ b/src/Umbraco.Core/CompositionExtensions_Essentials.cs @@ -1,5 +1,6 @@ using Umbraco.Core.Cache; using Umbraco.Core.Composing; +using Umbraco.Core.Configuration; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; @@ -22,7 +23,8 @@ namespace Umbraco.Core TypeLoader typeLoader, IRuntimeState state, ITypeFinder typeFinder, - IIOHelper ioHelper) + IIOHelper ioHelper, + IUmbracoVersion umbracoVersion) { composition.RegisterUnique(logger); composition.RegisterUnique(profiler); @@ -35,6 +37,7 @@ namespace Umbraco.Core composition.RegisterUnique(state); composition.RegisterUnique(typeFinder); composition.RegisterUnique(ioHelper); + composition.RegisterUnique(umbracoVersion); } } } diff --git a/src/Umbraco.Core/Configuration/ConfigsFactory.cs b/src/Umbraco.Core/Configuration/ConfigsFactory.cs index 89a31ce10b..0e75cea39b 100644 --- a/src/Umbraco.Core/Configuration/ConfigsFactory.cs +++ b/src/Umbraco.Core/Configuration/ConfigsFactory.cs @@ -20,7 +20,7 @@ namespace Umbraco.Core.Configuration configs.Add("umbracoConfiguration/settings"); configs.Add("umbracoConfiguration/HealthChecks"); - configs.Add(() => new CoreDebug()); + configs.Add(() => new CoreDebug()); configs.AddCoreConfigs(_ioHelper); return configs; } diff --git a/src/Umbraco.Configuration/CoreDebug.cs b/src/Umbraco.Core/Configuration/CoreDebug.cs similarity index 96% rename from src/Umbraco.Configuration/CoreDebug.cs rename to src/Umbraco.Core/Configuration/CoreDebug.cs index e81ca14873..43238b2980 100644 --- a/src/Umbraco.Configuration/CoreDebug.cs +++ b/src/Umbraco.Core/Configuration/CoreDebug.cs @@ -3,7 +3,7 @@ using System.Configuration; namespace Umbraco.Core.Configuration { - public class CoreDebug + public class CoreDebug : ICoreDebug { public CoreDebug() { diff --git a/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs b/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs index e8fd3414ec..d61397155a 100644 --- a/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs +++ b/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs @@ -1,6 +1,7 @@ using System; using System.Configuration; using Semver; +using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Migrations.Upgrade.Common; using Umbraco.Core.Migrations.Upgrade.V_8_0_0; @@ -17,6 +18,7 @@ namespace Umbraco.Core.Migrations.Upgrade private const string InitPrefix = "{init-"; private const string InitSuffix = "}"; + private IUmbracoVersion UmbracoVersion => Current.UmbracoVersion; /// /// Initializes a new instance of the class. /// diff --git a/src/Umbraco.Core/Models/Packaging/PackageDefinition.cs b/src/Umbraco.Core/Models/Packaging/PackageDefinition.cs index 070d0773d2..e12a722b37 100644 --- a/src/Umbraco.Core/Models/Packaging/PackageDefinition.cs +++ b/src/Umbraco.Core/Models/Packaging/PackageDefinition.cs @@ -4,6 +4,7 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Runtime.Serialization; +using Umbraco.Core.Composing; namespace Umbraco.Core.Models.Packaging { @@ -69,8 +70,8 @@ namespace Umbraco.Core.Models.Packaging /// The minimum umbraco version that this package requires /// [DataMember(Name = "umbracoVersion")] - public Version UmbracoVersion { get; set; } = Configuration.UmbracoVersion.Current; - + public Version UmbracoVersion { get; set; } = Current.UmbracoVersion.Current; + [DataMember(Name = "author")] [Required] public string Author { get; set; } = string.Empty; @@ -131,7 +132,7 @@ namespace Umbraco.Core.Models.Packaging [DataMember(Name = "iconUrl")] public string IconUrl { get; set; } = string.Empty; - + } diff --git a/src/Umbraco.Core/Packaging/PackagesRepository.cs b/src/Umbraco.Core/Packaging/PackagesRepository.cs index cdfb532a39..1dfd6488ba 100644 --- a/src/Umbraco.Core/Packaging/PackagesRepository.cs +++ b/src/Umbraco.Core/Packaging/PackagesRepository.cs @@ -548,6 +548,7 @@ namespace Umbraco.Core.Packaging private static XElement GetPackageInfoXml(PackageDefinition definition) { + var info = new XElement("info"); //Package info @@ -564,9 +565,9 @@ namespace Umbraco.Core.Packaging var requirements = new XElement("requirements"); - requirements.Add(new XElement("major", definition.UmbracoVersion == null ? UmbracoVersion.SemanticVersion.Major.ToInvariantString() : definition.UmbracoVersion.Major.ToInvariantString())); - requirements.Add(new XElement("minor", definition.UmbracoVersion == null ? UmbracoVersion.SemanticVersion.Minor.ToInvariantString() : definition.UmbracoVersion.Minor.ToInvariantString())); - requirements.Add(new XElement("patch", definition.UmbracoVersion == null ? UmbracoVersion.SemanticVersion.Patch.ToInvariantString() : definition.UmbracoVersion.Build.ToInvariantString())); + requirements.Add(new XElement("major", definition.UmbracoVersion == null ? Current.UmbracoVersion.SemanticVersion.Major.ToInvariantString() : definition.UmbracoVersion.Major.ToInvariantString())); + requirements.Add(new XElement("minor", definition.UmbracoVersion == null ? Current.UmbracoVersion.SemanticVersion.Minor.ToInvariantString() : definition.UmbracoVersion.Minor.ToInvariantString())); + requirements.Add(new XElement("patch", definition.UmbracoVersion == null ? Current.UmbracoVersion.SemanticVersion.Patch.ToInvariantString() : definition.UmbracoVersion.Build.ToInvariantString())); if (definition.UmbracoVersion != null) requirements.Add(new XAttribute("type", RequirementsType.Strict.ToString())); diff --git a/src/Umbraco.Core/Runtime/CoreRuntime.cs b/src/Umbraco.Core/Runtime/CoreRuntime.cs index d4647cbdd2..99b8997ce5 100644 --- a/src/Umbraco.Core/Runtime/CoreRuntime.cs +++ b/src/Umbraco.Core/Runtime/CoreRuntime.cs @@ -5,6 +5,7 @@ using System.Diagnostics; using System.IO; using System.Web; using System.Web.Hosting; +using Semver; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; @@ -89,8 +90,9 @@ namespace Umbraco.Core.Runtime // are NOT disposed - which is not a big deal as long as they remain lightweight // objects. + var umbracoVersion = new UmbracoVersion(); using (var timer = profilingLogger.TraceDuration( - $"Booting Umbraco {UmbracoVersion.SemanticVersion.ToSemanticString()}.", + $"Booting Umbraco {umbracoVersion.SemanticVersion.ToSemanticString()}.", "Booted.", "Boot failed.")) { @@ -135,6 +137,7 @@ namespace Umbraco.Core.Runtime // configs var configs = GetConfigs(); + var umbracoVersion = GetUmbracoVersion(configs.Global()); // type finder/loader var typeLoader = new TypeLoader(IOHelper, TypeFinder, appCaches.RuntimeCache, new DirectoryInfo(configs.Global().LocalTempPath), ProfilingLogger); @@ -144,7 +147,8 @@ namespace Umbraco.Core.Runtime _state = new RuntimeState(Logger, configs.Settings(), configs.Global(), new Lazy(() => _factory.GetInstance()), - new Lazy(() => _factory.GetInstance())) + new Lazy(() => _factory.GetInstance()), + umbracoVersion) { Level = RuntimeLevel.Boot }; @@ -154,7 +158,7 @@ namespace Umbraco.Core.Runtime // create the composition composition = new Composition(register, typeLoader, ProfilingLogger, _state, configs); - composition.RegisterEssentials(Logger, Profiler, ProfilingLogger, mainDom, appCaches, databaseFactory, typeLoader, _state, TypeFinder, IOHelper); + composition.RegisterEssentials(Logger, Profiler, ProfilingLogger, mainDom, appCaches, databaseFactory, typeLoader, _state, TypeFinder, IOHelper, umbracoVersion); // run handlers RuntimeOptions.DoRuntimeEssentials(composition, appCaches, typeLoader, databaseFactory); @@ -218,6 +222,11 @@ namespace Umbraco.Core.Runtime return _factory; } + private IUmbracoVersion GetUmbracoVersion(IGlobalSettings globalSettings) + { + return new UmbracoVersion(globalSettings); + } + protected virtual void ConfigureUnhandledException() { //take care of unhandled exceptions - there is nothing we can do to diff --git a/src/Umbraco.Core/RuntimeState.cs b/src/Umbraco.Core/RuntimeState.cs index 5d34fe70a1..a73c1d9170 100644 --- a/src/Umbraco.Core/RuntimeState.cs +++ b/src/Umbraco.Core/RuntimeState.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Threading; using System.Web; using Semver; +using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Exceptions; @@ -25,18 +26,20 @@ namespace Umbraco.Core private readonly HashSet _applicationUrls = new HashSet(); private readonly Lazy _mainDom; private readonly Lazy _serverRegistrar; + private readonly IUmbracoVersion _umbracoVersion; /// /// Initializes a new instance of the class. /// public RuntimeState(ILogger logger, IUmbracoSettingsSection settings, IGlobalSettings globalSettings, - Lazy mainDom, Lazy serverRegistrar) + Lazy mainDom, Lazy serverRegistrar, IUmbracoVersion umbracoVersion) { _logger = logger; _settings = settings; _globalSettings = globalSettings; _mainDom = mainDom; _serverRegistrar = serverRegistrar; + _umbracoVersion = umbracoVersion; } /// @@ -56,13 +59,13 @@ namespace Umbraco.Core public IMainDom MainDom => _mainDom.Value; /// - public Version Version => UmbracoVersion.Current; + public Version Version => _umbracoVersion.Current; /// - public string VersionComment => UmbracoVersion.Comment; + public string VersionComment => _umbracoVersion.Comment; /// - public SemVersion SemanticVersion => UmbracoVersion.SemanticVersion; + public SemVersion SemanticVersion => _umbracoVersion.SemanticVersion; /// public bool Debug { get; } = GlobalSettings.DebugMode; @@ -125,7 +128,7 @@ namespace Umbraco.Core /// public void DetermineRuntimeLevel(IUmbracoDatabaseFactory databaseFactory, ILogger logger) { - var localVersion = UmbracoVersion.LocalVersion; // the local, files, version + var localVersion = _umbracoVersion.LocalVersion; // the local, files, version var codeVersion = SemanticVersion; // the executing code version var connect = false; diff --git a/src/Umbraco.Core/Services/Implement/KeyValueService.cs b/src/Umbraco.Core/Services/Implement/KeyValueService.cs index b3f3f2468d..57e7c9ba74 100644 --- a/src/Umbraco.Core/Services/Implement/KeyValueService.cs +++ b/src/Umbraco.Core/Services/Implement/KeyValueService.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; using Umbraco.Core.Migrations; @@ -39,7 +40,7 @@ namespace Umbraco.Core.Services.Implement // if already running 8, either following an upgrade or an install, // then everything should be ok (the table should exist, etc) - if (UmbracoVersion.LocalVersion != null && UmbracoVersion.LocalVersion.Major >= 8) + if (Current.UmbracoVersion.LocalVersion != null && Current.UmbracoVersion.LocalVersion.Major >= 8) { _initialized = true; return; @@ -202,9 +203,7 @@ namespace Umbraco.Core.Services.Implement /// Used by to determine the runtime state. internal static string GetValue(IUmbracoDatabase database, string key) { - // not 8 yet = no key/value table, no value - if (UmbracoVersion.LocalVersion.Major < 8) - return null; + if (database is null) return null; var sql = database.SqlContext.Sql() .Select() diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 52d7ae7f9a..59e9c40d00 100755 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -136,11 +136,8 @@ - - - @@ -152,8 +149,8 @@ - + @@ -1020,10 +1017,6 @@ {29aa69d9-b597-4395-8d42-43b1263c240a} Umbraco.Abstractions - - {fbe7c065-dac0-4025-a78b-63b24d3ab00b} - Umbraco.Configuration - \ No newline at end of file diff --git a/src/Umbraco.Tests/Configurations/GlobalSettingsTests.cs b/src/Umbraco.Tests/Configurations/GlobalSettingsTests.cs index c80b917784..b836dda1e5 100644 --- a/src/Umbraco.Tests/Configurations/GlobalSettingsTests.cs +++ b/src/Umbraco.Tests/Configurations/GlobalSettingsTests.cs @@ -36,7 +36,7 @@ namespace Umbraco.Tests.Configurations [Test] public void Is_Version_From_Assembly_Correct() { - Assert.That(UmbracoVersion.SemanticVersion, Is.EqualTo("6.0.0")); + Assert.That(Current.UmbracoVersion.SemanticVersion, Is.EqualTo("6.0.0")); } [TestCase("~/umbraco", "/", "umbraco")] diff --git a/src/Umbraco.Tests/Misc/ApplicationUrlHelperTests.cs b/src/Umbraco.Tests/Misc/ApplicationUrlHelperTests.cs index 79878a59a1..8283b0b65a 100644 --- a/src/Umbraco.Tests/Misc/ApplicationUrlHelperTests.cs +++ b/src/Umbraco.Tests/Misc/ApplicationUrlHelperTests.cs @@ -27,7 +27,7 @@ namespace Umbraco.Tests.Misc [Test] public void NoApplicationUrlByDefault() { - var state = new RuntimeState(Mock.Of(), Mock.Of(), Mock.Of(), new Lazy(), new Lazy()); + var state = new RuntimeState(Mock.Of(), Mock.Of(), Mock.Of(), new Lazy(), new Lazy(), TestHelper.GetUmbracoVersion()); Assert.IsNull(state.ApplicationUrl); } @@ -45,7 +45,7 @@ namespace Umbraco.Tests.Misc var registrar = new Mock(); registrar.Setup(x => x.GetCurrentServerUmbracoApplicationUrl()).Returns("http://server1.com/umbraco"); - var state = new RuntimeState(Mock.Of(), settings, globalConfig.Object, new Lazy(), new Lazy(() => registrar.Object)); + var state = new RuntimeState(Mock.Of(), settings, globalConfig.Object, new Lazy(), new Lazy(() => registrar.Object), TestHelper.GetUmbracoVersion()); state.EnsureApplicationUrl(); @@ -67,7 +67,7 @@ namespace Umbraco.Tests.Misc - var state = new RuntimeState(Mock.Of(), settings, globalConfig.Object, new Lazy(), new Lazy(() => Mock.Of())); + var state = new RuntimeState(Mock.Of(), settings, globalConfig.Object, new Lazy(), new Lazy(() => Mock.Of()), TestHelper.GetUmbracoVersion()); state.EnsureApplicationUrl(); @@ -90,7 +90,7 @@ namespace Umbraco.Tests.Misc // still NOT set Assert.IsNull(url); } - + [Test] public void SetApplicationUrlFromWrSettingsSsl() { diff --git a/src/Umbraco.Tests/Routing/UmbracoModuleTests.cs b/src/Umbraco.Tests/Routing/UmbracoModuleTests.cs index e95fdfc87c..aed4dba493 100644 --- a/src/Umbraco.Tests/Routing/UmbracoModuleTests.cs +++ b/src/Umbraco.Tests/Routing/UmbracoModuleTests.cs @@ -32,8 +32,9 @@ namespace Umbraco.Tests.Routing //create the module var logger = Mock.Of(); var globalSettings = TestObjects.GetGlobalSettings(); + var umbracoVersion = TestHelper.GetUmbracoVersion(); var runtime = new RuntimeState(logger, Mock.Of(), globalSettings, - new Lazy(), new Lazy()); + new Lazy(), new Lazy(), umbracoVersion); _module = new UmbracoInjectedModule ( @@ -62,7 +63,7 @@ namespace Umbraco.Tests.Routing // do not test for /base here as it's handled before EnsureUmbracoRoutablePage is called [TestCase("/umbraco_client/Tree/treeIcons.css", false)] - [TestCase("/umbraco_client/Tree/Themes/umbraco/style.css?cdv=37", false)] + [TestCase("/umbraco_client/Tree/Themes/umbraco/style.css?cdv=37", false)] [TestCase("/umbraco/editContent.aspx", false)] [TestCase("/install/default.aspx", false)] [TestCase("/install/?installStep=license", false)] diff --git a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs index 38a2d68e13..e799c4e638 100644 --- a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs +++ b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs @@ -65,12 +65,13 @@ namespace Umbraco.Tests.Runtimes var ioHelper = IOHelper.Default; var typeLoader = new TypeLoader(ioHelper, typeFinder, appCaches.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), profilingLogger); var mainDom = new SimpleMainDom(); - var runtimeState = new RuntimeState(logger, null, null, new Lazy(() => mainDom), new Lazy(() => factory.GetInstance())); + var umbracoVersion = TestHelper.GetUmbracoVersion(); + var runtimeState = new RuntimeState(logger, null, null, new Lazy(() => mainDom), new Lazy(() => factory.GetInstance()), umbracoVersion); // create the register and the composition var register = RegisterFactory.Create(); var composition = new Composition(register, typeLoader, profilingLogger, runtimeState, TestHelper.GetConfigs()); - composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, typeFinder, ioHelper); + composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, typeFinder, ioHelper, umbracoVersion); // create the core runtime and have it compose itself var coreRuntime = new CoreRuntime(); @@ -262,7 +263,8 @@ namespace Umbraco.Tests.Runtimes // create the register and the composition var register = RegisterFactory.Create(); var composition = new Composition(register, typeLoader, profilingLogger, runtimeState, TestHelper.GetConfigs()); - composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, typeFinder, ioHelper); + var umbracoVersion = TestHelper.GetUmbracoVersion(); + composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, typeFinder, ioHelper, umbracoVersion); // create the core runtime and have it compose itself var coreRuntime = new CoreRuntime(); diff --git a/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs b/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs index d04ad98f6d..7dc2aec8ea 100644 --- a/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs +++ b/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs @@ -15,7 +15,7 @@ namespace Umbraco.Tests.TestHelpers { var config = Mock.Of( settings => - settings.ConfigurationStatus == UmbracoVersion.SemanticVersion.ToSemanticString() && + settings.ConfigurationStatus == TestHelper.GetUmbracoVersion().SemanticVersion.ToSemanticString() && settings.UseHttps == false && settings.HideTopLevelNodeFromPath == false && settings.Path == Current.IOHelper.ResolveUrl("~/umbraco") && diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs index 5cd9359d5a..9dc24e4989 100644 --- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs +++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs @@ -276,5 +276,9 @@ namespace Umbraco.Tests.TestHelpers } + public static IUmbracoVersion GetUmbracoVersion() + { + return new UmbracoVersion(GetConfigs().Global()); + } } } diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects.cs b/src/Umbraco.Tests/TestHelpers/TestObjects.cs index 6d90d2e7d0..41395b465a 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects.cs @@ -246,5 +246,6 @@ namespace Umbraco.Tests.TestHelpers var scopeProvider = new ScopeProvider(databaseFactory, fileSystems, logger, typeFinder); return scopeProvider; } + } } diff --git a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs index 050de4fcb9..9ced8d8a5d 100644 --- a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs +++ b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs @@ -132,7 +132,7 @@ namespace Umbraco.Tests.TestHelpers // ensure the configuration matches the current version for tests var globalSettingsMock = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettingsMock.Setup(x => x.ConfigurationStatus).Returns(UmbracoVersion.Current.ToString(3)); + globalSettingsMock.Setup(x => x.ConfigurationStatus).Returns(Current.UmbracoVersion.Current.ToString(3)); using (ProfilingLogger.TraceDuration("Initialize database.")) { diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs index c963633aa0..f7804f33f0 100644 --- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs +++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs @@ -100,6 +100,7 @@ namespace Umbraco.Tests.Testing protected ILogger Logger => Factory.GetInstance(); protected IIOHelper IOHelper { get; private set; } + protected IUmbracoVersion UmbracoVersion { get; private set; } protected ITypeFinder TypeFinder { get; private set; } @@ -134,9 +135,11 @@ namespace Umbraco.Tests.Testing var (logger, profiler) = GetLoggers(Options.Logger); var proflogger = new ProfilingLogger(logger, profiler); IOHelper = Umbraco.Core.IO.IOHelper.Default; + TypeFinder = new TypeFinder(logger); var appCaches = GetAppCaches(); var globalSettings = SettingsForTests.GetDefaultGlobalSettings(); + UmbracoVersion = new UmbracoVersion(globalSettings); var typeLoader = GetTypeLoader(IOHelper, TypeFinder, appCaches.RuntimeCache, globalSettings, proflogger, Options.TypeLoader); var register = RegisterFactory.Create(); @@ -145,6 +148,7 @@ namespace Umbraco.Tests.Testing Composition.RegisterUnique(IOHelper); + Composition.RegisterUnique(UmbracoVersion); Composition.RegisterUnique(TypeFinder); Composition.RegisterUnique(typeLoader); Composition.RegisterUnique(logger); diff --git a/src/Umbraco.Web/Composing/Current.cs b/src/Umbraco.Web/Composing/Current.cs index 026dedca7d..a3cdc599a3 100644 --- a/src/Umbraco.Web/Composing/Current.cs +++ b/src/Umbraco.Web/Composing/Current.cs @@ -227,6 +227,7 @@ namespace Umbraco.Web.Composing public static IVariationContextAccessor VariationContextAccessor => CoreCurrent.VariationContextAccessor; public static IIOHelper IOHelper => CoreCurrent.IOHelper; + public static IUmbracoVersion UmbracoVersion => CoreCurrent.UmbracoVersion; #endregion } diff --git a/src/Umbraco.Web/Editors/BackOfficeServerVariables.cs b/src/Umbraco.Web/Editors/BackOfficeServerVariables.cs index 43d0bd3b6b..1b963f1a62 100644 --- a/src/Umbraco.Web/Editors/BackOfficeServerVariables.cs +++ b/src/Umbraco.Web/Editors/BackOfficeServerVariables.cs @@ -442,10 +442,10 @@ namespace Umbraco.Web.Editors // add versions - see UmbracoVersion for details & differences // the complete application version (eg "8.1.2-alpha.25") - { "version", UmbracoVersion.SemanticVersion.ToSemanticString() }, + { "version", Current.UmbracoVersion.SemanticVersion.ToSemanticString() }, // the assembly version (eg "8.0.0") - { "assemblyVersion", UmbracoVersion.AssemblyVersion.ToString() } + { "assemblyVersion", Current.UmbracoVersion.AssemblyVersion.ToString() } }; var version = _runtimeState.SemanticVersion.ToSemanticString(); diff --git a/src/Umbraco.Web/Editors/DashboardController.cs b/src/Umbraco.Web/Editors/DashboardController.cs index eef0b5df93..cfa92003bd 100644 --- a/src/Umbraco.Web/Editors/DashboardController.cs +++ b/src/Umbraco.Web/Editors/DashboardController.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Net; using System.Text; using Umbraco.Core.Cache; +using Umbraco.Core.Composing; using Umbraco.Web.WebApi; using Umbraco.Web.WebApi.Filters; using Umbraco.Core.Logging; @@ -51,7 +52,7 @@ namespace Umbraco.Web.Editors var user = Security.CurrentUser; var allowedSections = string.Join(",", user.AllowedSections); var language = user.Language; - var version = UmbracoVersion.SemanticVersion.ToSemanticString(); + var version = Current.UmbracoVersion.SemanticVersion.ToSemanticString(); var url = string.Format(baseUrl + "{0}?section={0}&allowed={1}&lang={2}&version={3}", section, allowedSections, language, version); var key = "umbraco-dynamic-dashboard-" + language + allowedSections.Replace(",", "-") + section; diff --git a/src/Umbraco.Web/Editors/PackageInstallController.cs b/src/Umbraco.Web/Editors/PackageInstallController.cs index 7dc4008d91..932a86c082 100644 --- a/src/Umbraco.Web/Editors/PackageInstallController.cs +++ b/src/Umbraco.Web/Editors/PackageInstallController.cs @@ -118,7 +118,7 @@ namespace Umbraco.Web.Editors if (ins.UmbracoVersionRequirementsType == RequirementsType.Strict) { var packageMinVersion = ins.UmbracoVersion; - if (UmbracoVersion.Current < packageMinVersion) + if (Current.UmbracoVersion.Current < packageMinVersion) { model.IsCompatible = false; } @@ -215,7 +215,7 @@ namespace Umbraco.Web.Editors { var packageFile = await Services.PackagingService.FetchPackageFileAsync( Guid.Parse(packageGuid), - UmbracoVersion.Current, + Current.UmbracoVersion.Current, Security.GetUserId().ResultOr(0)); fileName = packageFile.Name; @@ -259,7 +259,7 @@ namespace Umbraco.Web.Editors if (packageInfo.UmbracoVersionRequirementsType == RequirementsType.Strict) { var packageMinVersion = packageInfo.UmbracoVersion; - if (UmbracoVersion.Current < packageMinVersion) + if (Current.UmbracoVersion.Current < packageMinVersion) throw new HttpResponseException(Request.CreateNotificationValidationErrorResponse( Services.TextService.Localize("packager/targetVersionMismatch", new[] {packageMinVersion.ToString()}))); } @@ -366,7 +366,7 @@ namespace Umbraco.Web.Editors //bump cdf to be safe var clientDependencyConfig = new ClientDependencyConfiguration(Logger); var clientDependencyUpdated = clientDependencyConfig.UpdateVersionNumber( - UmbracoVersion.SemanticVersion, DateTime.UtcNow, "yyyyMMdd"); + Current.UmbracoVersion.SemanticVersion, DateTime.UtcNow, "yyyyMMdd"); var redirectUrl = ""; if (!packageInfo.PackageView.IsNullOrWhiteSpace()) diff --git a/src/Umbraco.Web/Editors/UpdateCheckController.cs b/src/Umbraco.Web/Editors/UpdateCheckController.cs index 132526576b..b3f8676821 100644 --- a/src/Umbraco.Web/Editors/UpdateCheckController.cs +++ b/src/Umbraco.Web/Editors/UpdateCheckController.cs @@ -26,10 +26,10 @@ namespace Umbraco.Web.Editors { var check = new org.umbraco.update.CheckForUpgrade { Timeout = 2000 }; - var result = check.CheckUpgrade(UmbracoVersion.Current.Major, - UmbracoVersion.Current.Minor, - UmbracoVersion.Current.Build, - UmbracoVersion.Comment); + var result = check.CheckUpgrade(Current.UmbracoVersion.Current.Major, + Current.UmbracoVersion.Current.Minor, + Current.UmbracoVersion.Current.Build, + Current.UmbracoVersion.Comment); return new UpgradeCheckResponse(result.UpgradeType.ToString(), result.Comment, result.UpgradeUrl); } diff --git a/src/Umbraco.Web/Install/Controllers/InstallController.cs b/src/Umbraco.Web/Install/Controllers/InstallController.cs index 4b99c2ccba..96583cf4e0 100644 --- a/src/Umbraco.Web/Install/Controllers/InstallController.cs +++ b/src/Umbraco.Web/Install/Controllers/InstallController.cs @@ -48,7 +48,7 @@ namespace Umbraco.Web.Install.Controllers // Update ClientDependency version var clientDependencyConfig = new ClientDependencyConfiguration(_logger); var clientDependencyUpdated = clientDependencyConfig.UpdateVersionNumber( - UmbracoVersion.SemanticVersion, DateTime.UtcNow, "yyyyMMdd"); + Current.UmbracoVersion.SemanticVersion, DateTime.UtcNow, "yyyyMMdd"); // Delete ClientDependency temp directories to make sure we get fresh caches var clientDependencyTempFilesDeleted = clientDependencyConfig.ClearTempFiles(HttpContext); diff --git a/src/Umbraco.Web/Install/InstallHelper.cs b/src/Umbraco.Web/Install/InstallHelper.cs index effb46c9b7..2cfd4b8c4d 100644 --- a/src/Umbraco.Web/Install/InstallHelper.cs +++ b/src/Umbraco.Web/Install/InstallHelper.cs @@ -75,10 +75,10 @@ namespace Umbraco.Web.Install IsBrandNewInstall == false, isCompleted, DateTime.Now, - UmbracoVersion.Current.Major, - UmbracoVersion.Current.Minor, - UmbracoVersion.Current.Build, - UmbracoVersion.Comment, + Current.UmbracoVersion.Current.Major, + Current.UmbracoVersion.Current.Minor, + Current.UmbracoVersion.Current.Build, + Current.UmbracoVersion.Comment, errorMsg, userAgent, dbProvider); @@ -141,7 +141,7 @@ namespace Umbraco.Web.Install var packages = new List(); try { - var requestUri = $"https://our.umbraco.com/webapi/StarterKit/Get/?umbracoVersion={UmbracoVersion.Current}"; + var requestUri = $"https://our.umbraco.com/webapi/StarterKit/Get/?umbracoVersion={Current.UmbracoVersion.Current}"; using (var request = new HttpRequestMessage(HttpMethod.Get, requestUri)) { diff --git a/src/Umbraco.Web/Install/InstallSteps/SetUmbracoVersionStep.cs b/src/Umbraco.Web/Install/InstallSteps/SetUmbracoVersionStep.cs index b5fdea32b7..a5b36d8033 100644 --- a/src/Umbraco.Web/Install/InstallSteps/SetUmbracoVersionStep.cs +++ b/src/Umbraco.Web/Install/InstallSteps/SetUmbracoVersionStep.cs @@ -61,7 +61,7 @@ namespace Umbraco.Web.Install.InstallSteps } // Update configurationStatus - _globalSettings.ConfigurationStatus = UmbracoVersion.SemanticVersion.ToSemanticString(); + _globalSettings.ConfigurationStatus = Current.UmbracoVersion.SemanticVersion.ToSemanticString(); //reports the ended install _installHelper.InstallStatus(true, ""); diff --git a/src/Umbraco.Web/Install/InstallSteps/StarterKitDownloadStep.cs b/src/Umbraco.Web/Install/InstallSteps/StarterKitDownloadStep.cs index 78b58a509e..20503316cf 100644 --- a/src/Umbraco.Web/Install/InstallSteps/StarterKitDownloadStep.cs +++ b/src/Umbraco.Web/Install/InstallSteps/StarterKitDownloadStep.cs @@ -64,7 +64,7 @@ namespace Umbraco.Web.Install.InstallSteps private async Task<(string packageFile, int packageId)> DownloadPackageFilesAsync(Guid kitGuid) { //Go get the package file from the package repo - var packageFile = await _packageService.FetchPackageFileAsync(kitGuid, UmbracoVersion.Current, _umbracoContextAccessor.UmbracoContext.Security.GetUserId().ResultOr(0)); + var packageFile = await _packageService.FetchPackageFileAsync(kitGuid, Current.UmbracoVersion.Current, _umbracoContextAccessor.UmbracoContext.Security.GetUserId().ResultOr(0)); if (packageFile == null) throw new InvalidOperationException("Could not fetch package file " + kitGuid); //add an entry to the installedPackages.config diff --git a/src/Umbraco.Web/Install/InstallSteps/UpgradeStep.cs b/src/Umbraco.Web/Install/InstallSteps/UpgradeStep.cs index 3cab550a87..23a3c9062d 100644 --- a/src/Umbraco.Web/Install/InstallSteps/UpgradeStep.cs +++ b/src/Umbraco.Web/Install/InstallSteps/UpgradeStep.cs @@ -25,9 +25,9 @@ namespace Umbraco.Web.Install.InstallSteps // that was a "normal" way to force the upgrader to execute, and we would detect the current // version via the DB like DatabaseSchemaResult.DetermineInstalledVersion - magic, do we really // need this now? - var currentVersion = (UmbracoVersion.LocalVersion ?? new Semver.SemVersion(0)).ToString(); + var currentVersion = (Current.UmbracoVersion.LocalVersion ?? new Semver.SemVersion(0)).ToString(); - var newVersion = UmbracoVersion.SemanticVersion.ToString(); + var newVersion = Current.UmbracoVersion.SemanticVersion.ToString(); string FormatGuidState(string value) { diff --git a/src/Umbraco.Web/Models/UpgradeCheckResponse.cs b/src/Umbraco.Web/Models/UpgradeCheckResponse.cs index df384a51cd..ddbeac4989 100644 --- a/src/Umbraco.Web/Models/UpgradeCheckResponse.cs +++ b/src/Umbraco.Web/Models/UpgradeCheckResponse.cs @@ -5,6 +5,7 @@ using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Web; +using Umbraco.Core.Composing; using Umbraco.Core.Configuration; namespace Umbraco.Web.Models @@ -26,7 +27,7 @@ namespace Umbraco.Web.Models { Type = upgradeType; Comment = upgradeComment; - Url = upgradeUrl + "?version=" + HttpUtility.UrlEncode(UmbracoVersion.Current.ToString(3)); + Url = upgradeUrl + "?version=" + HttpUtility.UrlEncode(Current.UmbracoVersion.Current.ToString(3)); } } } diff --git a/src/Umbraco.Web/Security/Providers/UmbracoMembershipProvider.cs b/src/Umbraco.Web/Security/Providers/UmbracoMembershipProvider.cs index 1f7e2c8084..92289f8174 100644 --- a/src/Umbraco.Web/Security/Providers/UmbracoMembershipProvider.cs +++ b/src/Umbraco.Web/Security/Providers/UmbracoMembershipProvider.cs @@ -355,7 +355,7 @@ namespace Umbraco.Web.Security.Providers // http://issues.umbraco.org/issue/U4-3451 // when upgrading from 7.2 to 7.3 trying to save will throw - if (UmbracoVersion.Current >= new Version(7, 3, 0, 0)) + if (Current.UmbracoVersion.Current >= new Version(7, 3, 0, 0)) MemberService.Save(member, false); } @@ -595,7 +595,7 @@ namespace Umbraco.Web.Security.Providers // for this type of thing (i.e. UpdateLastLogin or similar). // when upgrading from 7.2 to 7.3 trying to save will throw - if (UmbracoVersion.Current >= new Version(7, 3, 0, 0)) + if (Current.UmbracoVersion.Current >= new Version(7, 3, 0, 0)) MemberService.Save(member, false); return new ValidateUserResult diff --git a/src/umbraco.sln b/src/umbraco.sln index 07ed63c7a3..c70f10bdb3 100644 --- a/src/umbraco.sln +++ b/src/umbraco.sln @@ -1,7 +1,4 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27004.2005 -Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29209.152 MinimumVisualStudioVersion = 10.0.40219.1