diff --git a/.editorconfig b/.editorconfig
index 5f3b4d684a..d2f3002c12 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -15,3 +15,16 @@ indent_size = 4
# Trim trailing whitespace, limited support.
# https://github.com/editorconfig/editorconfig/wiki/Property-research:-Trim-trailing-spaces
trim_trailing_whitespace = true
+
+[*.{cs,vb}]
+dotnet_style_predefined_type_for_locals_parameters_members = true:error
+
+dotnet_naming_rule.private_members_with_underscore.symbols = private_fields
+dotnet_naming_rule.private_members_with_underscore.style = prefix_underscore
+dotnet_naming_rule.private_members_with_underscore.severity = suggestion
+
+dotnet_naming_symbols.private_fields.applicable_kinds = field
+dotnet_naming_symbols.private_fields.applicable_accessibilities = private
+
+dotnet_naming_style.prefix_underscore.capitalization = camel_case
+dotnet_naming_style.prefix_underscore.required_prefix = _
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 9f22544f35..6c180fa693 100644
--- a/.gitignore
+++ b/.gitignore
@@ -121,6 +121,9 @@ src/Umbraco.Web.UI.Client/bower_components/*
/src/Umbraco.Web.UI/Umbraco/preview
/src/Umbraco.Web.UI/Umbraco/preview.old
+# ignore rule for clearing out Belle (avoid rebuilding all the time)
+preserve.belle
+
#Ignore Rule for output of generated documentation files from Grunt docserve
src/Umbraco.Web.UI.Client/docs/api
src/*.boltdata/
diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec
index d06b5e7136..5e836f602b 100644
--- a/build/NuSpecs/UmbracoCms.Core.nuspec
+++ b/build/NuSpecs/UmbracoCms.Core.nuspec
@@ -43,7 +43,7 @@
-
+
diff --git a/build/NuSpecs/tools/Web.config.install.xdt b/build/NuSpecs/tools/Web.config.install.xdt
index 7af4a38c14..5fb0a79ee3 100644
--- a/build/NuSpecs/tools/Web.config.install.xdt
+++ b/build/NuSpecs/tools/Web.config.install.xdt
@@ -4,8 +4,8 @@
-
-
+
+
@@ -67,190 +67,6 @@
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/build/NuSpecs/tools/trees.config.install.xdt b/build/NuSpecs/tools/trees.config.install.xdt
index 5a549e3fd8..dc59b5db10 100644
--- a/build/NuSpecs/tools/trees.config.install.xdt
+++ b/build/NuSpecs/tools/trees.config.install.xdt
@@ -86,9 +86,6 @@
-
+
+
\ No newline at end of file
diff --git a/build/build.ps1 b/build/build.ps1
index 013be89cb4..1c8d429333 100644
--- a/build/build.ps1
+++ b/build/build.ps1
@@ -372,8 +372,6 @@
Write-Host "Add web.config transforms to NuGet package"
mv "$($this.BuildTemp)\WebApp\Views\Web.config" "$($this.BuildTemp)\WebApp\Views\Web.config.transform"
- # fixme - that one does not exist in .bat build either?
- #mv "$($this.BuildTemp)\WebApp\Xslt\Web.config" "$($this.BuildTemp)\WebApp\Xslt\Web.config.transform"
})
$ubuild.DefineMethod("RestoreNuGet",
diff --git a/src/Umbraco.Core/Cache/CacheKeys.cs b/src/Umbraco.Core/Cache/CacheKeys.cs
index 68b4c3b157..bba5655b7a 100644
--- a/src/Umbraco.Core/Cache/CacheKeys.cs
+++ b/src/Umbraco.Core/Cache/CacheKeys.cs
@@ -22,9 +22,7 @@ namespace Umbraco.Core.Cache
[UmbracoWillObsolete("This cache key is only used for the legacy 'library' caching, remove in v8")]
public const string MediaCacheKey = "UL_GetMedia";
-
- public const string MacroXsltCacheKey = "macroXslt_";
-
+
[UmbracoWillObsolete("This cache key is only used for legacy business logic caching, remove in v8")]
public const string MacroCacheKey = "UmbracoMacroCache";
@@ -39,54 +37,14 @@ namespace Umbraco.Core.Cache
[UmbracoWillObsolete("This cache key is only used for legacy template business logic caching, remove in v8")]
public const string TemplateFrontEndCacheKey = "template";
- [Obsolete("This is no longer used and will be removed from the codebase in the future")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public const string TemplateBusinessLogicCacheKey = "UmbracoTemplateCache";
-
- [Obsolete("This is no longer used and will be removed from the codebase in the future")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public const string UserContextCacheKey = "UmbracoUserContext";
-
public const string UserContextTimeoutCacheKey = "UmbracoUserContextTimeout";
- [Obsolete("This is no longer used and will be removed from the codebase in the future")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public const string UserCacheKey = "UmbracoUser";
-
- [Obsolete("This is no longer used and will be removed from the codebase in the future")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public const string UserGroupPermissionsCacheKey = "UmbracoUserGroupPermissions";
-
[UmbracoWillObsolete("This cache key is only used for legacy business logic caching, remove in v8")]
public const string ContentTypeCacheKey = "UmbracoContentType";
[UmbracoWillObsolete("This cache key is only used for legacy business logic caching, remove in v8")]
public const string ContentTypePropertiesCacheKey = "ContentType_PropertyTypes_Content:";
-
- [Obsolete("No longer used and will be removed in v8")]
- public const string PropertyTypeCacheKey = "UmbracoPropertyTypeCache";
-
- [Obsolete("This is no longer used and will be removed from the codebase in the future")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public const string LanguageCacheKey = "UmbracoLanguageCache";
-
- [Obsolete("This is no longer used and will be removed from the codebase in the future")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public const string DomainCacheKey = "UmbracoDomainList";
-
- [Obsolete("This is no longer used and will be removed from the codebase in the future")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public const string StylesheetCacheKey = "UmbracoStylesheet";
-
- [Obsolete("This is no longer used and will be removed from the codebase in the future")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public const string StylesheetPropertyCacheKey = "UmbracoStylesheetProperty";
-
- [Obsolete("This is no longer used and will be removed from the codebase in the future")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public const string DataTypeCacheKey = "UmbracoDataTypeDefinition";
- public const string DataTypePreValuesCacheKey = "UmbracoPreVal";
-
+
public const string IdToKeyCacheKey = "UI2K__";
public const string KeyToIdCacheKey = "UK2I__";
}
diff --git a/src/Umbraco.Core/Cache/DictionaryCacheProviderBase.cs b/src/Umbraco.Core/Cache/DictionaryCacheProviderBase.cs
index 6baa2cf0ed..9da202b5aa 100644
--- a/src/Umbraco.Core/Cache/DictionaryCacheProviderBase.cs
+++ b/src/Umbraco.Core/Cache/DictionaryCacheProviderBase.cs
@@ -24,8 +24,13 @@ namespace Umbraco.Core.Cache
protected abstract object GetEntry(string key);
// read-write lock the underlying cache
- protected abstract IDisposable ReadLock { get; }
- protected abstract IDisposable WriteLock { get; }
+ //protected abstract IDisposable ReadLock { get; }
+ //protected abstract IDisposable WriteLock { get; }
+
+ protected abstract void EnterReadLock();
+ protected abstract void ExitReadLock();
+ protected abstract void EnterWriteLock();
+ protected abstract void ExitWriteLock();
protected string GetCacheKey(string key)
{
@@ -88,21 +93,31 @@ namespace Umbraco.Core.Cache
public virtual void ClearAllCache()
{
- using (WriteLock)
+ try
{
+ EnterWriteLock();
foreach (var entry in GetDictionaryEntries()
.ToArray())
RemoveEntry((string) entry.Key);
}
+ finally
+ {
+ ExitWriteLock();
+ }
}
public virtual void ClearCacheItem(string key)
{
var cacheKey = GetCacheKey(key);
- using (WriteLock)
+ try
{
+ EnterWriteLock();
RemoveEntry(cacheKey);
}
+ finally
+ {
+ ExitWriteLock();
+ }
}
public virtual void ClearCacheObjectTypes(string typeName)
@@ -110,15 +125,16 @@ namespace Umbraco.Core.Cache
var type = TypeFinder.GetTypeByName(typeName);
if (type == null) return;
var isInterface = type.IsInterface;
- using (WriteLock)
+ try
{
+ EnterWriteLock();
foreach (var entry in GetDictionaryEntries()
.Where(x =>
{
// entry.Value is Lazy