diff --git a/CHANGELOG.md b/CHANGELOG.md index fb64833..30c45fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Polly.Caching.MemoryCache change log +## 2.0.0 +- Provide a single signed package only. +- Reference Polly v6.0.1. +- Remove .net 4 and 4.5 support. +- Add .net standard 2.0 as a target framework. +- Change namespaces from Polly.Caching.MemoryCache to Polly.Caching.Memory to avoid clashes. + ## 1.1.0 - Polly.Caching.MemoryCache-Signed now references Polly-Signed diff --git a/GitVersionConfig.yaml b/GitVersionConfig.yaml index de5a2d4..ddba28c 100644 --- a/GitVersionConfig.yaml +++ b/GitVersionConfig.yaml @@ -1 +1 @@ -next-version: 1.1.0 \ No newline at end of file +next-version: 2.0.0 \ No newline at end of file diff --git a/README.md b/README.md index be09999..cf13816 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# Polly.Caching.MemoryCache +# Polly.Caching.Memory -This repo contains the MemoryCache plugin for the [Polly](https://github.com/App-vNext/Polly) [Cache policy](https://github.com/App-vNext/Polly/wiki/Cache). It targets .NET 4.0, .NET 4.5 and .NET Standard 1.3. +This repo contains the MemoryCache plugin for the [Polly](https://github.com/App-vNext/Polly) [Cache policy](https://github.com/App-vNext/Polly/wiki/Cache). The current version targets .NET Standard 1.3 and .NET Standard 2.0. -[![NuGet version](https://badge.fury.io/nu/Polly.Caching.MemoryCache.svg)](https://badge.fury.io/nu/Polly.Caching.MemoryCache) [![Build status](https://ci.appveyor.com/api/projects/status/pgd89nfdr9u4ig8m?svg=true)](https://ci.appveyor.com/project/joelhulen/polly-caching-memorycache) [![Slack Status](http://www.pollytalk.org/badge.svg)](http://www.pollytalk.org) +[![NuGet version](https://badge.fury.io/nu/Polly.Caching.Memory.svg)](https://badge.fury.io/nu/Polly.Caching.Memory) [![Build status](https://ci.appveyor.com/api/projects/status/pgd89nfdr9u4ig8m?svg=true)](https://ci.appveyor.com/project/joelhulen/polly-caching-Memory) [![Slack Status](http://www.pollytalk.org/badge.svg)](http://www.pollytalk.org) ## What is Polly? -[Polly](https://github.com/App-vNext/Polly) is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, Cache aside and Fallback in a fluent and thread-safe manner. Polly targets .NET 4.0, .NET 4.5 and .NET Standard 1.1. +[Polly](https://github.com/App-vNext/Polly) is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, Cache aside and Fallback in a fluent and thread-safe manner. Polly targets .NET Standard 1.1 and .NET Standrad 2.0. Polly is a member of the [.NET Foundation](https://www.dotnetfoundation.org/about)! @@ -14,39 +14,40 @@ Polly is a member of the [.NET Foundation](https://www.dotnetfoundation.org/abou ![](https://raw.github.com/App-vNext/Polly/master/Polly-Logo.png) -# Installing Polly.Caching.MemoryCache via NuGet +# Installing Polly.Caching.Memory via NuGet - Install-Package Polly.Caching.MemoryCache + Install-Package Polly.Caching.Memory -You can install the Strongly Named version via: - - Install-Package Polly.Caching.MemoryCache-Signed # Supported targets -Polly.Caching.MemoryCache supports .NET4.0, .NET4.5 and .NetStandard 1.3. +Polly.Caching.Memory >= v2.0 supports .NET Standard 1.3 and .NET Standard 2.0. + +Polly.Caching.MemoryCache <v2.0 supports .NET4.0, .NET4.5 and .NetStandard 1.3 ## Dependencies -Polly.Caching.MemoryCache works with Polly v5.9.0 and above. +Polly.Caching.Memory >= v2.0 works with Polly v6.0.1 and above. + +Polly.Caching.MemoryCache <v2.0 works with Polly v5.9.0 and above. -# How to use the Polly.Caching.MemoryCache plugin +# How to use the Polly.Caching.Memory plugin ```csharp -// (1a): Create a MemoryCacheProvider instance in the .NET Framework, using the Polly.Caching.MemoryCache nuget package. +// (1a): Create a MemoryCacheProvider instance in the .NET Framework, using the Polly.Caching.Memory nuget package. // (full namespaces and types only shown here for disambiguation) -Polly.Caching.MemoryCache.MemoryCacheProvider memoryCacheProvider - = new Polly.Caching.MemoryCache.MemoryCacheProvider(System.Runtime.Caching.MemoryCache.Default); +Polly.Caching.Memory.MemoryCacheProvider memoryCacheProvider + = new Polly.Caching.Memory.MemoryCacheProvider(System.Runtime.Caching.MemoryCache.Default); // Or (1b): Create a MemoryCacheProvider instance in .NET Core / .NET Standard. // (full namespaces and types only shown here for disambiguation) // NB Only if you want to create your own Microsoft.Extensions.Caching.Memory.MemoryCache instance: Microsoft.Extensions.Caching.Memory.IMemoryCache memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -Polly.Caching.MemoryCache.MemoryCacheProvider memoryCacheProvider - = new Polly.Caching.MemoryCache.MemoryCacheProvider(memoryCache); +Polly.Caching.Memory.MemoryCacheProvider memoryCacheProvider + = new Polly.Caching.Memory.MemoryCacheProvider(memoryCache); -// (2) Create a Polly cache policy using that Polly.Caching.MemoryCache.MemoryCacheProvider instance. +// (2) Create a Polly cache policy using that Polly.Caching.Memory.MemoryCacheProvider instance. var cachePolicy = Policy.Cache(memoryCacheProvider, TimeSpan.FromMinutes(5)); @@ -99,6 +100,7 @@ For details of changes by release see the [change log](CHANGELOG.md). * [@reisenberger](https://github.com/reisenberger) - MemoryCache implementation * [@seanfarrow](https://github.com/seanfarrow) and [@reisenberger](https://github.com/reisenberger) - Initial caching architecture in the main Polly repo * [@kesmy](https://github.com/kesmy) - original structuring of the build for msbuild15, in the main Polly repo +* [@seanfarrow](https://github.com/seanfarrow) - v2.0 update to Signed packages only to correspond with Polly v6.0.1 # Instructions for Contributing diff --git a/build.cake b/build.cake index cf1544a..63bba11 100644 --- a/build.cake +++ b/build.cake @@ -25,7 +25,7 @@ using System.Text.Json; // GLOBAL VARIABLES /////////////////////////////////////////////////////////////////////////////// -var projectName = "Polly.Caching.MemoryCache"; +var projectName = "Polly.Caching.Memory"; var keyName = "Polly.snk"; var solutions = GetFiles("./**/*.sln"); @@ -38,30 +38,27 @@ var testResultsDir = artifactsDir + Directory("test-results"); // NuGet var nuspecExtension = ".nuspec"; -var signed = "-Signed"; var nuspecFolder = "nuget-package"; var nuspecSrcFile = srcDir + File(projectName + nuspecExtension); var nuspecDestFile = buildDir + File(projectName + nuspecExtension); -var nuspecSignedDestFile = buildDir + File(projectName + signed + nuspecExtension); var nupkgDestDir = artifactsDir + Directory(nuspecFolder); var snkFile = srcDir + File(keyName); var projectToNugetFolderMap = new Dictionary() { - { "Net45" , new [] {"net45"} }, - { "NetStandard13" , new [] {"netstandard1.3"} }, - { "Net40Async" , new [] {"net40"} }, - { "Net45-Signed" , new [] {"net45"} }, - { "NetStandard13-Signed", new [] {"netstandard1.3"} }, - { "Net40Async-Signed" , new [] {"net40"} }, + { "NetStandard13", new [] {"netstandard1.3"} }, + { "NetStandard20", new [] {"netstandard2.0"} }, }; -var netStandard = "NetStandard"; -var specs = "Specs"; - // Gitversion var gitVersionPath = ToolsExePath("GitVersion.exe"); Dictionary gitVersionOutput; +// Versioning +string nugetVersion; +string appveyorBuildNumber; +string assemblyVersion; +string assemblySemver; + // StrongNameSigner var strongNameSignerPath = ToolsExePath("StrongNameSigner.Console.exe"); @@ -72,12 +69,13 @@ var strongNameSignerPath = ToolsExePath("StrongNameSigner.Console.exe"); Setup(_ => { - Information(@""); - Information(@" ____ __ __ __ _ _ ___ __ ___ _ _ __ __ _ ___ _ _ ____ _ _ __ ____ _ _ ___ __ ___ _ _ ____ "); - Information(@"( _ \ / \ ( ) ( ) ( \/ ) / __) / _\ / __)/ )( \( )( ( \ / __) ( \/ )( __)( \/ ) / \( _ \( \/ )/ __) / _\ / __)/ )( \( __)"); - Information(@" ) __/( O )/ (_/\/ (_/\ ) /_( (__ / \( (__ ) __ ( )( / /( (_ \ _ / \/ \ ) _) / \/ \( O )) / ) /( (__ / \( (__ ) __ ( ) _) "); - Information(@"(__) \__/ \____/\____/(__/(_)\___)\_/\_/ \___)\_)(_/(__)\_)__) \___/(_)\_)(_/(____)\_)(_/ \__/(__\_)(__/ \___)\_/\_/ \___)\_)(_/(____)"); - Information(@""); + // ASCII art via: http://patorjk.com/software/taag/?#p=display&f=Graceful&t=Polly.Caching.Memory%0A + Information(""); + Information(@" ____ __ __ __ _ _ ___ __ ___ _ _ __ __ _ ___ _ _ ____ _ _ __ ____ _ _ "); + Information(@"( _ \ / \ ( ) ( ) ( \/ ) / __) / _\ / __)/ )( \( )( ( \ / __) ( \/ )( __)( \/ ) / \( _ \( \/ )"); + Information(@" ) __/( O )/ (_/\/ (_/\ ) /_( (__ / \( (__ ) __ ( )( / /( (_ \ _ / \/ \ ) _) / \/ \( O )) / ) / "); + Information(@"(__) \__/ \____/\____/(__/(_)\___)\_/\_/ \___)\_)(_/(__)\_)__) \___/(_)\_)(_/(____)\_)(_/ \__/(__\_)(__/ "); + Information(""); }); Teardown(_ => @@ -134,38 +132,62 @@ Task("__UpdateAssemblyVersionInformation") gitVersionOutput = new JsonParser().Parse>(output); Information("Updated GlobalAssemblyInfo"); - Information("AssemblyVersion -> {0}", gitVersionOutput["AssemblySemVer"]); - Information("AssemblyFileVersion -> {0}", gitVersionOutput["MajorMinorPatch"]); - Information("AssemblyInformationalVersion -> {0}", gitVersionOutput["InformationalVersion"]); + + Information(""); + Information("Obtained raw version info for package versioning:"); + Information("NuGetVersion -> {0}", gitVersionOutput["NuGetVersion"]); + Information("FullSemVer -> {0}", gitVersionOutput["FullSemVer"]); + Information("AssemblySemVer -> {0}", gitVersionOutput["AssemblySemVer"]); + + appveyorBuildNumber = gitVersionOutput["FullSemVer"].ToString(); + nugetVersion = gitVersionOutput["NuGetVersion"].ToString(); + assemblyVersion = gitVersionOutput["Major"].ToString() + ".0.0.0"; + assemblySemver = gitVersionOutput["AssemblySemVer"].ToString(); + + Information(""); + Information("Mapping versioning information to:"); + Information("Appveyor build number -> {0}", appveyorBuildNumber); + Information("Nuget package version -> {0}", nugetVersion); + Information("AssemblyVersion -> {0}", assemblyVersion); + Information("AssemblyFileVersion -> {0}", assemblySemver); + Information("AssemblyInformationalVersion -> {0}", assemblySemver); }); Task("__UpdateDotNetStandardAssemblyVersionNumber") .Does(() => { - // NOTE: TEMPORARY fix only, while GitVersionTask does not support .Net Standard assemblies. See https://github.com/App-vNext/Polly/issues/176. - // This build Task can be removed when GitVersionTask supports .Net Standard assemblies. - var assemblySemVer = gitVersionOutput["AssemblySemVer"].ToString(); - Information("Updating NetStandard AssemblyVersions to {0}", assemblySemVer); + Information("Updating Assembly Version Information"); + + var attributeToValueMap = new Dictionary() { + { "AssemblyVersion", assemblyVersion }, + { "AssemblyFileVersion", assemblySemver }, + { "AssemblyInformationalVersion", assemblySemver }, + }; + var assemblyInfosToUpdate = GetFiles("./src/**/Properties/AssemblyInfo.cs") .Select(f => f.FullPath) - .Where(f => f.Contains(netStandard)) - .Where(f => !f.Contains(specs)); - - foreach(var assemblyInfo in assemblyInfosToUpdate) { - var replacedFiles = ReplaceRegexInFiles(assemblyInfo, "AssemblyVersion[(]\".*\"[)]", "AssemblyVersion(\"" + assemblySemVer +"\")"); - if (!replacedFiles.Any()) - { - throw new Exception("AssemblyVersion could not be updated in " + assemblyInfo + "."); + .Where(f => !f.Contains("Specs")); + + foreach(var attributeMap in attributeToValueMap) { + var attribute = attributeMap.Key; + var value = attributeMap.Value; + + foreach(var assemblyInfo in assemblyInfosToUpdate) { + var replacedFiles = ReplaceRegexInFiles(assemblyInfo, attribute + "[(]\".*\"[)]", attribute + "(\"" + value +"\")"); + if (!replacedFiles.Any()) + { + throw new Exception($"{attribute} attribute could not be updated in {assemblyInfo}."); + } } } + }); Task("__UpdateAppVeyorBuildNumber") .WithCriteria(() => AppVeyor.IsRunningOnAppVeyor) .Does(() => { - var fullSemVer = gitVersionOutput["FullSemVer"].ToString(); - AppVeyor.UpdateBuildVersion(fullSemVer); + AppVeyor.UpdateBuildVersion(appveyorBuildNumber); }); Task("__BuildSolutions") @@ -188,33 +210,18 @@ Task("__BuildSolutions") Task("__RunTests") .Does(() => { - XUnit2("./src/**/bin/" + configuration + "/**/*.Net4*.Specs.dll", new XUnit2Settings { - OutputDirectory = testResultsDir, - XmlReportV1 = true - }); -}); - -Task("__RunDotnetTests") - .Does(() => -{ - foreach(var specsProj in GetFiles("./src/**/*.Specs.csproj") - .Select(f => f.FullPath) - .Where(f => f.Contains(netStandard)) - ) { - DotNetCoreTest(specsProj, new DotNetCoreTestSettings { - Configuration = configuration, - NoBuild = true + foreach(var specsProj in GetFiles("./src/**/*.Specs.csproj")) { + DotNetCoreTest(specsProj.FullPath, new DotNetCoreTestSettings { + Configuration = configuration, + NoBuild = true }); } }); - -Task("__CopyNonSignedOutputToNugetFolder") +Task("__CopyOutputToNugetFolder") .Does(() => { - foreach(var project in projectToNugetFolderMap.Keys - .Where(p => !p.Contains(signed)) - ) { + foreach(var project in projectToNugetFolderMap.Keys) { var sourceDir = srcDir + Directory(projectName + "." + project) + Directory("bin") + Directory(configuration); foreach(var targetFolder in projectToNugetFolderMap[project]) { @@ -228,49 +235,6 @@ Task("__CopyNonSignedOutputToNugetFolder") CopyFile(nuspecSrcFile, nuspecDestFile); }); -Task("__CopySignedOutputToNugetFolder") - .Does(() => -{ - foreach(var project in projectToNugetFolderMap.Keys - .Where(p => p.Contains(signed)) - ) { - var sourceDir = srcDir + Directory(projectName + "." + project) + Directory("bin") + Directory(configuration); - - foreach(var targetFolder in projectToNugetFolderMap[project]) { - var destDir = buildDir + Directory("lib"); - - Information("Copying {0} -> {1}.", sourceDir, destDir); - CopyDirectory(sourceDir, destDir); - } - } - - CopyFile(nuspecSrcFile, nuspecSignedDestFile); - - var replacedFiles = ReplaceRegexInFiles(nuspecSignedDestFile, "dependency id=\"(Polly\\S*)\"", "dependency id=\"$1-Signed\""); - if (!replacedFiles.Any()) - { - throw new Exception("Could not set Polly dependency to Polly-Signed, for -Signed nuget package."); - } -}); - -Task("__CreateNonSignedNugetPackage") - .Does(() => -{ - var nugetVersion = gitVersionOutput["NuGetVersion"].ToString(); - var packageName = projectName; - - Information("Building {0}.{1}.nupkg", packageName, nugetVersion); - - var nuGetPackSettings = new NuGetPackSettings { - Id = packageName, - Title = packageName, - Version = nugetVersion, - OutputDirectory = nupkgDestDir - }; - - NuGetPack(nuspecDestFile, nuGetPackSettings); -}); - Task("__StronglySignAssemblies") .Does(() => { @@ -290,8 +254,7 @@ Task("__StronglySignAssemblies") Task("__CreateSignedNugetPackage") .Does(() => { - var nugetVersion = gitVersionOutput["NuGetVersion"].ToString(); - var packageName = projectName + signed; + var packageName = projectName; Information("Building {0}.{1}.nupkg", packageName, nugetVersion); @@ -302,10 +265,9 @@ Task("__CreateSignedNugetPackage") OutputDirectory = nupkgDestDir }; - NuGetPack(nuspecSignedDestFile, nuGetPackSettings); + NuGetPack(nuspecDestFile, nuGetPackSettings); }); - ////////////////////////////////////////////////////////////////////// // BUILD TASKS ////////////////////////////////////////////////////////////////////// @@ -318,10 +280,7 @@ Task("Build") .IsDependentOn("__UpdateAppVeyorBuildNumber") .IsDependentOn("__BuildSolutions") .IsDependentOn("__RunTests") - .IsDependentOn("__RunDotnetTests") - .IsDependentOn("__CopyNonSignedOutputToNugetFolder") - .IsDependentOn("__CreateNonSignedNugetPackage") - .IsDependentOn("__CopySignedOutputToNugetFolder") + .IsDependentOn("__CopyOutputToNugetFolder") .IsDependentOn("__StronglySignAssemblies") .IsDependentOn("__CreateSignedNugetPackage"); diff --git a/src/GlobalAssemblyInfo.cs b/src/GlobalAssemblyInfo.cs index 98a1aee..93e9b6a 100644 --- a/src/GlobalAssemblyInfo.cs +++ b/src/GlobalAssemblyInfo.cs @@ -1,8 +1,8 @@ using System.Reflection; -[assembly: AssemblyProduct("Polly.Caching.MemoryCache")] +[assembly: AssemblyProduct("Polly.Caching.Memory")] [assembly: AssemblyCompany("App vNext")] -[assembly: AssemblyDescription("Polly.Caching.MemoryCache is a MemoryCache plug-in for the Polly CachePolicy. Polly is a library that allows developers to express resilience and transient fault handling policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner.")] +[assembly: AssemblyDescription("Polly.Caching.Memory is a MemoryCache plug-in for the Polly CachePolicy. Polly is a library that allows developers to express resilience and transient fault handling policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner.")] [assembly: AssemblyCopyright("Copyright (c) 2018, App vNext")] #if DEBUG diff --git a/src/Polly.Caching.MemoryCache.NetStandard13.Specs/Polly.Caching.MemoryCache.NetStandard13.Specs.csproj b/src/Polly.Caching.Memory.NetStandard13.Specs/Polly.Caching.Memory.NetStandard13.Specs.csproj similarity index 80% rename from src/Polly.Caching.MemoryCache.NetStandard13.Specs/Polly.Caching.MemoryCache.NetStandard13.Specs.csproj rename to src/Polly.Caching.Memory.NetStandard13.Specs/Polly.Caching.Memory.NetStandard13.Specs.csproj index 2851af9..fd59df7 100644 --- a/src/Polly.Caching.MemoryCache.NetStandard13.Specs/Polly.Caching.MemoryCache.NetStandard13.Specs.csproj +++ b/src/Polly.Caching.Memory.NetStandard13.Specs/Polly.Caching.Memory.NetStandard13.Specs.csproj @@ -19,7 +19,6 @@ - @@ -28,7 +27,7 @@ - + - + \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net45-Signed.Specs/Properties/AssemblyInfo.cs b/src/Polly.Caching.Memory.NetStandard13.Specs/Properties/AssemblyInfo.cs similarity index 60% rename from src/Polly.Caching.MemoryCache.Net45-Signed.Specs/Properties/AssemblyInfo.cs rename to src/Polly.Caching.Memory.NetStandard13.Specs/Properties/AssemblyInfo.cs index 0c39a6c..10a7039 100644 --- a/src/Polly.Caching.MemoryCache.Net45-Signed.Specs/Properties/AssemblyInfo.cs +++ b/src/Polly.Caching.Memory.NetStandard13.Specs/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ using System.Reflection; using Xunit; -[assembly: AssemblyTitle("Polly.Caching.MemoryCache.Net45.Specs")] +[assembly: AssemblyTitle("Polly.Caching.Memory.NetStandard13.Specs")] [assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.NetStandard13/Polly.Caching.MemoryCache.NetStandard13.csproj b/src/Polly.Caching.Memory.NetStandard13/Polly.Caching.Memory.NetStandard13.csproj similarity index 76% rename from src/Polly.Caching.MemoryCache.NetStandard13/Polly.Caching.MemoryCache.NetStandard13.csproj rename to src/Polly.Caching.Memory.NetStandard13/Polly.Caching.Memory.NetStandard13.csproj index ed0e571..fee026a 100644 --- a/src/Polly.Caching.MemoryCache.NetStandard13/Polly.Caching.MemoryCache.NetStandard13.csproj +++ b/src/Polly.Caching.Memory.NetStandard13/Polly.Caching.Memory.NetStandard13.csproj @@ -1,12 +1,12 @@  - Polly.Caching.MemoryCache + Polly.Caching.Memory ..\Polly.Caching.MemoryCache.Net45\Polly.Caching.MemoryCache.snk TRACE;PORTABLE en-US false true - Polly.Caching.MemoryCache + Polly.Caching.Memory netstandard1.3 1.6.1 @@ -18,7 +18,7 @@ true - + False @@ -29,7 +29,7 @@ - + - + \ No newline at end of file diff --git a/src/Polly.Caching.Memory.NetStandard13/Properties/AssemblyInfo.cs b/src/Polly.Caching.Memory.NetStandard13/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..80e051b --- /dev/null +++ b/src/Polly.Caching.Memory.NetStandard13/Properties/AssemblyInfo.cs @@ -0,0 +1,11 @@ +using System; +using System.Reflection; +using System.Runtime.CompilerServices; + +[assembly: AssemblyTitle("Polly.Caching.Memory")] +[assembly: AssemblyVersion("2.0.0.0")] +[assembly: AssemblyFileVersion("2.0.0.0")] +[assembly: AssemblyInformationalVersion("2.0.0.0")] +[assembly: CLSCompliant(false)] // Because Microsoft.Extensions.Caching.Memory.MemoryCache, on which Polly.Caching.MemoryCache.NetStandard13 depends, is not CLSCompliant. + +[assembly: InternalsVisibleTo("Polly.Caching.Memory.NetStandard13.Specs")] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.NetStandard13-Signed.Specs/Polly.Caching.MemoryCache.NetStandard13-Signed.Specs.csproj b/src/Polly.Caching.Memory.NetStandard20.Specs/Polly.Caching.Memory.NetStandard20.Specs.csproj similarity index 75% rename from src/Polly.Caching.MemoryCache.NetStandard13-Signed.Specs/Polly.Caching.MemoryCache.NetStandard13-Signed.Specs.csproj rename to src/Polly.Caching.Memory.NetStandard20.Specs/Polly.Caching.Memory.NetStandard20.Specs.csproj index 3d06ff6..cb5abc1 100644 --- a/src/Polly.Caching.MemoryCache.NetStandard13-Signed.Specs/Polly.Caching.MemoryCache.NetStandard13-Signed.Specs.csproj +++ b/src/Polly.Caching.Memory.NetStandard20.Specs/Polly.Caching.Memory.NetStandard20.Specs.csproj @@ -2,7 +2,7 @@ false Library - netcoreapp1.1 + netcoreapp2.0 library @@ -19,7 +19,6 @@ - @@ -28,7 +27,7 @@ - + - + \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net45.Specs/Properties/AssemblyInfo.cs b/src/Polly.Caching.Memory.NetStandard20.Specs/Properties/AssemblyInfo.cs similarity index 60% rename from src/Polly.Caching.MemoryCache.Net45.Specs/Properties/AssemblyInfo.cs rename to src/Polly.Caching.Memory.NetStandard20.Specs/Properties/AssemblyInfo.cs index 0c39a6c..05c431d 100644 --- a/src/Polly.Caching.MemoryCache.Net45.Specs/Properties/AssemblyInfo.cs +++ b/src/Polly.Caching.Memory.NetStandard20.Specs/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ using System.Reflection; using Xunit; -[assembly: AssemblyTitle("Polly.Caching.MemoryCache.Net45.Specs")] +[assembly: AssemblyTitle("Polly.Caching.Memory.NetStandard20.Specs")] [assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.NetStandard13-Signed/Polly.Caching.MemoryCache.NetStandard13-Signed.csproj b/src/Polly.Caching.Memory.NetStandard20/Polly.Caching.Memory.NetStandard20.csproj similarity index 66% rename from src/Polly.Caching.MemoryCache.NetStandard13-Signed/Polly.Caching.MemoryCache.NetStandard13-Signed.csproj rename to src/Polly.Caching.Memory.NetStandard20/Polly.Caching.Memory.NetStandard20.csproj index f709935..d83f341 100644 --- a/src/Polly.Caching.MemoryCache.NetStandard13-Signed/Polly.Caching.MemoryCache.NetStandard13-Signed.csproj +++ b/src/Polly.Caching.Memory.NetStandard20/Polly.Caching.Memory.NetStandard20.csproj @@ -1,14 +1,14 @@  - Polly.Caching.MemoryCache + Polly.Caching.Memory ..\Polly.Caching.MemoryCache.Net45\Polly.Caching.MemoryCache.snk TRACE;PORTABLE en-US false true - Polly.Caching.MemoryCache - netstandard1.3 - 1.6.1 + Polly.Caching.Memory + netstandard2.0 + 2.0 full @@ -18,7 +18,7 @@ true - + False @@ -28,8 +28,8 @@ - - + + - + \ No newline at end of file diff --git a/src/Polly.Caching.Memory.NetStandard20/Properties/AssemblyInfo.cs b/src/Polly.Caching.Memory.NetStandard20/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c830ca8 --- /dev/null +++ b/src/Polly.Caching.Memory.NetStandard20/Properties/AssemblyInfo.cs @@ -0,0 +1,11 @@ +using System; +using System.Reflection; +using System.Runtime.CompilerServices; + +[assembly: AssemblyTitle("Polly.Caching.Memory")] +[assembly: AssemblyVersion("2.0.0.0")] +[assembly: AssemblyFileVersion("2.0.0.0")] +[assembly: AssemblyInformationalVersion("2.0.0.0")] +[assembly: CLSCompliant(false)] // Because Microsoft.Extensions.Caching.Memory.MemoryCache, on which Polly.Caching.MemoryCache.NetStandard13 depends, is not CLSCompliant. + +[assembly: InternalsVisibleTo("Polly.Caching.Memory.NetStandard20.Specs")] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Shared/MemoryCacheProvider.cs b/src/Polly.Caching.Memory.Shared/MemoryCacheProvider.cs similarity index 75% rename from src/Polly.Caching.MemoryCache.Shared/MemoryCacheProvider.cs rename to src/Polly.Caching.Memory.Shared/MemoryCacheProvider.cs index 0de336a..973e049 100644 --- a/src/Polly.Caching.MemoryCache.Shared/MemoryCacheProvider.cs +++ b/src/Polly.Caching.Memory.Shared/MemoryCacheProvider.cs @@ -2,33 +2,22 @@ using Polly.Utilities; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Caching.Memory; -#if PORTABLE -using MemoryCacheImplementation = Microsoft.Extensions.Caching.Memory.IMemoryCache; -#else -using MemoryCacheImplementation = System.Runtime.Caching.MemoryCache; -#endif - -namespace Polly.Caching.MemoryCache +namespace Polly.Caching.Memory { -#if PORTABLE /// /// A cache provider for the Polly CachePolicy, using a passed-in instance of as the store. /// -#else - /// - /// A cache provider for the Polly CachePolicy, using a passed-in instance of as the store. - /// -#endif public class MemoryCacheProvider : ISyncCacheProvider, IAsyncCacheProvider { - private readonly MemoryCacheImplementation _cache; + private readonly IMemoryCache _cache; /// /// Initializes a new instance of the class. /// /// The memory cache instance in which to store cached items. - public MemoryCacheProvider(MemoryCacheImplementation memoryCache) + public MemoryCacheProvider(IMemoryCache memoryCache) { if (memoryCache == null) throw new ArgumentNullException(nameof(memoryCache)); _cache = memoryCache; @@ -41,17 +30,12 @@ public MemoryCacheProvider(MemoryCacheImplementation memoryCache) /// The value from cache; or null, if none was found. public object Get(String key) { -#if PORTABLE object value; if (_cache.TryGetValue(key, out value)) { return value; } return null; -#else - return _cache.Get(key); -#endif - } /// @@ -63,31 +47,25 @@ public object Get(String key) public void Put(string key, object value, Ttl ttl) { TimeSpan remaining = DateTimeOffset.MaxValue - SystemClock.DateTimeOffsetUtcNow(); + MemoryCacheEntryOptions options = new MemoryCacheEntryOptions(); -#if PORTABLE - using (Microsoft.Extensions.Caching.Memory.ICacheEntry entry = _cache.CreateEntry(key)) { - entry.Value = value; - if (ttl.SlidingExpiration) - { - entry.SlidingExpiration = ttl.Timespan < remaining ? ttl.Timespan : remaining; - } - else - { - entry.AbsoluteExpirationRelativeToNow = ttl.Timespan < remaining ? ttl.Timespan : remaining; - } - } -#else - System.Runtime.Caching.CacheItemPolicy cacheItemPolicy = new System.Runtime.Caching.CacheItemPolicy(); if (ttl.SlidingExpiration) { - cacheItemPolicy.SlidingExpiration = ttl.Timespan < remaining ? ttl.Timespan : remaining; + options.SlidingExpiration = ttl.Timespan < remaining ? ttl.Timespan : remaining; } else { - cacheItemPolicy.AbsoluteExpiration = ttl.Timespan < remaining ? SystemClock.DateTimeOffsetUtcNow().Add(ttl.Timespan) : DateTimeOffset.MaxValue; + if (ttl.Timespan == TimeSpan.MaxValue) + { + options.AbsoluteExpiration = DateTimeOffset.MaxValue; + } +else + { + options.AbsoluteExpirationRelativeToNow = ttl.Timespan < remaining ? ttl.Timespan : remaining; + } } - _cache.Set(key, value, cacheItemPolicy); -#endif + + _cache.Set(key, value, options); } /// @@ -121,8 +99,5 @@ public Task PutAsync(string key, object value, Ttl ttl, CancellationToken cancel return TaskHelper.EmptyTask; // (With C#7.0, a ValueTask<> approach would be preferred, but some of our tfms do not support that. TO DO: Implement it, with preprocessor if/endif directives, for NetStandard) } - - - } } diff --git a/src/Polly.Caching.MemoryCache.Shared/Polly.Caching.MemoryCache.Shared.projitems b/src/Polly.Caching.Memory.Shared/Polly.Caching.Memory.Shared.projitems similarity index 87% rename from src/Polly.Caching.MemoryCache.Shared/Polly.Caching.MemoryCache.Shared.projitems rename to src/Polly.Caching.Memory.Shared/Polly.Caching.Memory.Shared.projitems index 985d577..27d802d 100644 --- a/src/Polly.Caching.MemoryCache.Shared/Polly.Caching.MemoryCache.Shared.projitems +++ b/src/Polly.Caching.Memory.Shared/Polly.Caching.Memory.Shared.projitems @@ -6,7 +6,7 @@ 23fa87f9-c77d-4c67-a0b0-2901de51b3ff - Polly.Caching.MemoryCache + Polly.Caching.Memory diff --git a/src/Polly.Caching.MemoryCache.Shared/Polly.Caching.MemoryCache.Shared.shproj b/src/Polly.Caching.Memory.Shared/Polly.Caching.Memory.Shared.shproj similarity index 92% rename from src/Polly.Caching.MemoryCache.Shared/Polly.Caching.MemoryCache.Shared.shproj rename to src/Polly.Caching.Memory.Shared/Polly.Caching.Memory.Shared.shproj index ac4802b..a5625f3 100644 --- a/src/Polly.Caching.MemoryCache.Shared/Polly.Caching.MemoryCache.Shared.shproj +++ b/src/Polly.Caching.Memory.Shared/Polly.Caching.Memory.Shared.shproj @@ -8,6 +8,6 @@ - + diff --git a/src/Polly.Caching.MemoryCache.SharedSpecs/MemoryCacheProviderSpecs.cs b/src/Polly.Caching.Memory.SharedSpecs/MemoryCacheProviderSpecs.cs similarity index 59% rename from src/Polly.Caching.MemoryCache.SharedSpecs/MemoryCacheProviderSpecs.cs rename to src/Polly.Caching.Memory.SharedSpecs/MemoryCacheProviderSpecs.cs index 8ef8f7d..2b6c2fd 100644 --- a/src/Polly.Caching.MemoryCache.SharedSpecs/MemoryCacheProviderSpecs.cs +++ b/src/Polly.Caching.Memory.SharedSpecs/MemoryCacheProviderSpecs.cs @@ -3,15 +3,10 @@ using FluentAssertions; using Polly.Caching; using Xunit; -using Polly.Caching.MemoryCache; +using Polly.Caching.Memory; +using Microsoft.Extensions.Caching.Memory; -#if PORTABLE -using MemoryCacheImplementation = Microsoft.Extensions.Caching.Memory.IMemoryCache; -#else -using MemoryCacheImplementation = System.Runtime.Caching.MemoryCache; -#endif - -namespace Polly.Specs.Caching.MemoryCache +namespace Polly.Specs.Caching.Memory { public class MemoryCacheProviderSpecs { @@ -29,11 +24,7 @@ public void Should_throw_when_MemoryCacheImplementation_is_null() [Fact] public void Should_not_throw_when_MemoryCacheImplementation_is_not_null() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); Action configure = () => new MemoryCacheProvider(memoryCache); @@ -47,11 +38,7 @@ public void Should_not_throw_when_MemoryCacheImplementation_is_not_null() [Fact] public void Get_should_return_instance_previously_stored_in_cache() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); string key = Guid.NewGuid().ToString(); object value = new object(); @@ -72,11 +59,7 @@ public void Get_should_return_instance_previously_stored_in_cache() [Fact] public void Get_should_return_null_on_unknown_key() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); MemoryCacheProvider provider = new MemoryCacheProvider(memoryCache); object got = provider.Get(Guid.NewGuid().ToString()); @@ -90,11 +73,7 @@ public void Get_should_return_null_on_unknown_key() [Fact] public void Put_should_put_item_into_configured_MemoryCacheImplementation() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); string key = Guid.NewGuid().ToString(); object value = new object(); @@ -103,12 +82,8 @@ public void Put_should_put_item_into_configured_MemoryCacheImplementation() Ttl ttl = new Ttl(TimeSpan.FromSeconds(10)); provider.Put(key, value, ttl); -#if PORTABLE object got; memoryCache.TryGetValue(key, out got); -#else - object got = memoryCache[key]; -#endif got.Should().BeSameAs(value); } @@ -116,11 +91,7 @@ public void Put_should_put_item_into_configured_MemoryCacheImplementation() [Fact] public void Put_should_put_item_using_passed_nonsliding_ttl() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); TimeSpan shimTimeSpan = TimeSpan.FromSeconds(0.1); // If test fails transiently in different environments, consider increasing shimTimeSpan. @@ -132,22 +103,14 @@ public void Put_should_put_item_using_passed_nonsliding_ttl() provider.Put(key, value, ttl); // Initially (before ttl expires), should be able to get value from cache. -#if PORTABLE object got; memoryCache.TryGetValue(key, out got); -#else - object got = memoryCache[key]; -#endif got.Should().BeSameAs(value); // Wait until the TTL on the cache item should have expired. Thread.Sleep(shimTimeSpan + shimTimeSpan); -#if PORTABLE memoryCache.TryGetValue(key, out got); -#else - got = memoryCache[key]; -#endif got.Should().NotBeSameAs(value); got.Should().BeNull(); @@ -156,11 +119,7 @@ public void Put_should_put_item_using_passed_nonsliding_ttl() [Fact] public void Put_should_put_item_using_passed_sliding_ttl() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); TimeSpan shimTimeSpan = TimeSpan.FromSeconds(1); // If test fails transiently in different environments, consider increasing shimTimeSpan. @@ -176,12 +135,8 @@ public void Put_should_put_item_using_passed_sliding_ttl() for (int i = 0; i < 5; i++) { -#if PORTABLE object got; memoryCache.TryGetValue(key, out got); -#else - object got = memoryCache[key]; -#endif got.Should().BeSameAs(value, $"at iteration {i}"); @@ -194,11 +149,7 @@ public void Put_should_put_item_using_passed_sliding_ttl() [Fact] public void Put_should_put_item_using_passed_nonsliding_ttl_maxvalue() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); string key = "anything"; object value = new object(); @@ -207,118 +158,72 @@ public void Put_should_put_item_using_passed_nonsliding_ttl_maxvalue() Ttl ttl = new Ttl(TimeSpan.MaxValue, false); provider.Put(key, value, ttl); -#if PORTABLE object got; memoryCache.TryGetValue(key, out got); -#else - object got = memoryCache[key]; -#endif got.Should().BeSameAs(value); } [Fact] public void Put_should_put_item_using_passed_sliding_ttl_maxvalue() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); string key = "anything"; object value = new object(); MemoryCacheProvider provider = new MemoryCacheProvider(memoryCache); - TimeSpan maxSlidingExpiration = -#if PORTABLE - TimeSpan.MaxValue -#else - TimeSpan.FromDays(365) // This is the maximum permitted sliding ttl for .NetFramework4.0 and 4.5 MemoryCache. -#endif - ; - + TimeSpan maxSlidingExpiration = TimeSpan.MaxValue; + Ttl ttl = new Ttl(maxSlidingExpiration, true); provider.Put(key, value, ttl); -#if PORTABLE object got; memoryCache.TryGetValue(key, out got); -#else - object got = memoryCache[key]; -#endif got.Should().BeSameAs(value); } [Fact] public void Put_should_put_item_using_passed_nonsliding_ttl_zero() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); string key = "anything"; object value = new object(); MemoryCacheProvider provider = new MemoryCacheProvider(memoryCache); - TimeSpan minExpiration = -#if PORTABLE - TimeSpan.FromMilliseconds(1) // This is the minimum permitted non-sliding ttl for .NetStandard -#else - TimeSpan.Zero -#endif - ; + TimeSpan minExpiration = TimeSpan.FromMilliseconds(1); // This is the minimum permitted non-sliding ttl for .NetStandard Ttl ttl = new Ttl(minExpiration, false); provider.Put(key, value, ttl); Thread.Sleep(TimeSpan.FromMilliseconds(10)); -#if PORTABLE object got; memoryCache.TryGetValue(key, out got); -#else - object got = memoryCache[key]; -#endif got.Should().BeNull(); } [Fact] public void Put_should_put_item_using_passed_sliding_ttl_zero() { -#if PORTABLE - MemoryCacheImplementation memoryCache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions()); -#else - MemoryCacheImplementation memoryCache = System.Runtime.Caching.MemoryCache.Default; -#endif + IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()); string key = "anything"; object value = new object(); MemoryCacheProvider provider = new MemoryCacheProvider(memoryCache); - TimeSpan minExpiration = -#if PORTABLE - TimeSpan.FromMilliseconds(1) // This is the minimum permitted sliding ttl for .NetStandard -#else - TimeSpan.Zero -#endif - ; + TimeSpan minExpiration = TimeSpan.FromMilliseconds(1); // This is the minimum permitted sliding ttl for .NetStandard Ttl ttl = new Ttl(minExpiration, false); provider.Put(key, value, ttl); Thread.Sleep(TimeSpan.FromMilliseconds(10)); -#if PORTABLE object got; memoryCache.TryGetValue(key, out got); -#else - object got = memoryCache[key]; -#endif got.Should().BeNull(); } #endregion diff --git a/src/Polly.Caching.MemoryCache.SharedSpecs/Polly.Caching.MemoryCache.SharedSpecs.projitems b/src/Polly.Caching.Memory.SharedSpecs/Polly.Caching.Memory.SharedSpecs.projitems similarity index 86% rename from src/Polly.Caching.MemoryCache.SharedSpecs/Polly.Caching.MemoryCache.SharedSpecs.projitems rename to src/Polly.Caching.Memory.SharedSpecs/Polly.Caching.Memory.SharedSpecs.projitems index 5abcbf0..e3271db 100644 --- a/src/Polly.Caching.MemoryCache.SharedSpecs/Polly.Caching.MemoryCache.SharedSpecs.projitems +++ b/src/Polly.Caching.Memory.SharedSpecs/Polly.Caching.Memory.SharedSpecs.projitems @@ -6,7 +6,7 @@ 8d537c37-a4a2-4be1-84bc-34f1afb51ca8 - Polly.Caching.MemoryCache.Specs + Polly.Caching.Memory.Specs diff --git a/src/Polly.Caching.MemoryCache.SharedSpecs/Polly.Caching.MemoryCache.SharedSpecs.shproj b/src/Polly.Caching.Memory.SharedSpecs/Polly.Caching.Memory.SharedSpecs.shproj similarity index 92% rename from src/Polly.Caching.MemoryCache.SharedSpecs/Polly.Caching.MemoryCache.SharedSpecs.shproj rename to src/Polly.Caching.Memory.SharedSpecs/Polly.Caching.Memory.SharedSpecs.shproj index e411291..400e09f 100644 --- a/src/Polly.Caching.MemoryCache.SharedSpecs/Polly.Caching.MemoryCache.SharedSpecs.shproj +++ b/src/Polly.Caching.Memory.SharedSpecs/Polly.Caching.Memory.SharedSpecs.shproj @@ -8,6 +8,6 @@ - + diff --git a/src/Polly.Caching.MemoryCache.nuspec b/src/Polly.Caching.Memory.nuspec similarity index 65% rename from src/Polly.Caching.MemoryCache.nuspec rename to src/Polly.Caching.Memory.nuspec index d4a6ef3..53fede3 100644 --- a/src/Polly.Caching.MemoryCache.nuspec +++ b/src/Polly.Caching.Memory.nuspec @@ -4,7 +4,7 @@ App vNext App vNext - Polly.Caching.MemoryCache is a plug-in for the .NET OSS resilience library Polly, supporting System.Runtime.Caching.MemoryCache as a provider for Polly's CachePolicy. + Polly.Caching.Memory is a plug-in for the .NET OSS resilience library Polly, supporting System.Runtime.Caching.MemoryCache as a provider for Polly's CachePolicy. en-US https://raw.github.com/App-vNext/Polly/master/LICENSE.txt @@ -13,6 +13,14 @@ Polly Cache Caching Cache-aside Copyright © 2018, App vNext + 2.0.0 + --------------------- + - Provide a single signed package only. + - Reference Polly v6.0.1. + - Remove .net 4 and 4.5 support. + - Add .net standard 2.0 as a target framework. + - Rename package, and change namespaces, from Polly.Caching.MemoryCache to Polly.Caching.Memory, to avoid clashes. + 1.1.0 --------------------- - Polly.Caching.MemoryCache-Signed now references Polly-Signed @@ -34,20 +42,15 @@ - - - - + - - - - - - + + + + diff --git a/src/Polly.Caching.Memory.sln b/src/Polly.Caching.Memory.sln new file mode 100644 index 0000000..ab61c08 --- /dev/null +++ b/src/Polly.Caching.Memory.sln @@ -0,0 +1,57 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.16 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{79FE9DBE-1155-4F78-A41F-FE95DEFA19DD}" + ProjectSection(SolutionItems) = preProject + GlobalAssemblyInfo.cs = GlobalAssemblyInfo.cs + Polly.nuspec = Polly.nuspec + EndProjectSection +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Polly.Caching.Memory.Shared", "Polly.Caching.Memory.Shared\Polly.Caching.Memory.Shared.shproj", "{23FA87F9-C77D-4C67-A0B0-2901DE51B3FF}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Polly.Caching.Memory.SharedSpecs", "Polly.Caching.Memory.SharedSpecs\Polly.Caching.Memory.SharedSpecs.shproj", "{8D537C37-A4A2-4BE1-84BC-34F1AFB51CA8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.Memory.NetStandard13", "Polly.Caching.Memory.NetStandard13\Polly.Caching.Memory.NetStandard13.csproj", "{542F0446-583C-43EC-87E8-7A8139B00A7A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.Memory.NetStandard13.Specs", "Polly.Caching.Memory.NetStandard13.Specs\Polly.Caching.Memory.NetStandard13.Specs.csproj", "{B59FF935-0741-4BDC-9F50-671550E68443}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.Memory.NetStandard20", "Polly.Caching.Memory.NetStandard20\Polly.Caching.Memory.NetStandard20.csproj", "{8B6B293E-99D2-4F00-83FB-830D0CFD4FE8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.Memory.NetStandard20.Specs", "Polly.Caching.Memory.NetStandard20.Specs\Polly.Caching.Memory.NetStandard20.Specs.csproj", "{E74EE93B-FA19-4A06-A13F-C8E20176F974}" +EndProject +Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + Polly.Caching.Memory.Shared\Polly.Caching.Memory.Shared.projitems*{23fa87f9-c77d-4c67-a0b0-2901de51b3ff}*SharedItemsImports = 13 + Polly.Caching.Memory.SharedSpecs\Polly.Caching.Memory.SharedSpecs.projitems*{8d537c37-a4a2-4be1-84bc-34f1afb51ca8}*SharedItemsImports = 13 + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {542F0446-583C-43EC-87E8-7A8139B00A7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {542F0446-583C-43EC-87E8-7A8139B00A7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {542F0446-583C-43EC-87E8-7A8139B00A7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {542F0446-583C-43EC-87E8-7A8139B00A7A}.Release|Any CPU.Build.0 = Release|Any CPU + {B59FF935-0741-4BDC-9F50-671550E68443}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B59FF935-0741-4BDC-9F50-671550E68443}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B59FF935-0741-4BDC-9F50-671550E68443}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B59FF935-0741-4BDC-9F50-671550E68443}.Release|Any CPU.Build.0 = Release|Any CPU + {8B6B293E-99D2-4F00-83FB-830D0CFD4FE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8B6B293E-99D2-4F00-83FB-830D0CFD4FE8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8B6B293E-99D2-4F00-83FB-830D0CFD4FE8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8B6B293E-99D2-4F00-83FB-830D0CFD4FE8}.Release|Any CPU.Build.0 = Release|Any CPU + {E74EE93B-FA19-4A06-A13F-C8E20176F974}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E74EE93B-FA19-4A06-A13F-C8E20176F974}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E74EE93B-FA19-4A06-A13F-C8E20176F974}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E74EE93B-FA19-4A06-A13F-C8E20176F974}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {225C7584-19D4-4811-B41C-C4788F609986} + EndGlobalSection +EndGlobal diff --git a/src/Polly.Caching.MemoryCache.Net40Async-Signed.Specs/Polly.Caching.MemoryCache.Net40Async-Signed.Specs.csproj b/src/Polly.Caching.MemoryCache.Net40Async-Signed.Specs/Polly.Caching.MemoryCache.Net40Async-Signed.Specs.csproj deleted file mode 100644 index e1e16e4..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async-Signed.Specs/Polly.Caching.MemoryCache.Net40Async-Signed.Specs.csproj +++ /dev/null @@ -1,48 +0,0 @@ - - - net45 - false - - - full - DEBUG;TRACE;NET45 - - - pdbonly - true - TRACE;RELEASE;NET45 - - - - - - - - - - - - - - - - - - - - - - - - - Properties\GlobalAssemblyInfo.cs - - - - - - - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async-Signed.Specs/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.Net40Async-Signed.Specs/Properties/AssemblyInfo.cs deleted file mode 100644 index c17648e..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async-Signed.Specs/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System.Reflection; -using Xunit; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache.Net40Async.Specs")] -[assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async-Signed.Specs/readme.txt b/src/Polly.Caching.MemoryCache.Net40Async-Signed.Specs/readme.txt deleted file mode 100644 index 1568186..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async-Signed.Specs/readme.txt +++ /dev/null @@ -1,3 +0,0 @@ -This project exists to test Polly.Caching.MemoryCache.Net40Async-Signed.csproj. - -Polly.Caching.MemoryCache.Net40Async.csproj is compiled against .NET4.5, and has to be, to use XUnit version 2.0, on which we depend. This is however a valid way of xunit-testing a .NET40 assembly. See https://github.com/xunit/xunit/issues/241#issuecomment-67725679 \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async-Signed/Polly.Caching.MemoryCache.Net40Async-Signed.csproj b/src/Polly.Caching.MemoryCache.Net40Async-Signed/Polly.Caching.MemoryCache.Net40Async-Signed.csproj deleted file mode 100644 index fefb1cd..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async-Signed/Polly.Caching.MemoryCache.Net40Async-Signed.csproj +++ /dev/null @@ -1,37 +0,0 @@ - - - Polly.Caching.MemoryCache - net40 - false - true - true - true - - - full - TRACE;DEBUG;NET40 - - - pdbonly - true - TRACE;RELEASE;NET40 - - - - - - - - - - - - - - - - Properties\GlobalAssemblyInfo.cs - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async-Signed/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.Net40Async-Signed/Properties/AssemblyInfo.cs deleted file mode 100644 index 68962bf..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async-Signed/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; -using System.Reflection; -using System.Runtime.CompilerServices; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache")] -[assembly: CLSCompliant(false)] // Because Nito.AsycEx, on which Polly.Net40Async depends, is not CLSCompliant. - - -[assembly: InternalsVisibleTo("Polly.Caching.MemoryCache.Net40Async-Signed.Specs")] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async-Signed/app.config b/src/Polly.Caching.MemoryCache.Net40Async-Signed/app.config deleted file mode 100644 index e03ea0a..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async-Signed/app.config +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async.Specs/Polly.Caching.MemoryCache.Net40Async.Specs.csproj b/src/Polly.Caching.MemoryCache.Net40Async.Specs/Polly.Caching.MemoryCache.Net40Async.Specs.csproj deleted file mode 100644 index 9cc7186..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async.Specs/Polly.Caching.MemoryCache.Net40Async.Specs.csproj +++ /dev/null @@ -1,48 +0,0 @@ - - - net45 - false - - - full - DEBUG;TRACE;NET45 - - - pdbonly - true - TRACE;RELEASE;NET45 - - - - - - - - - - - - - - - - - - - - - - - - - Properties\GlobalAssemblyInfo.cs - - - - - - - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async.Specs/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.Net40Async.Specs/Properties/AssemblyInfo.cs deleted file mode 100644 index c17648e..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async.Specs/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System.Reflection; -using Xunit; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache.Net40Async.Specs")] -[assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async.Specs/readme.txt b/src/Polly.Caching.MemoryCache.Net40Async.Specs/readme.txt deleted file mode 100644 index 9d95ff1..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async.Specs/readme.txt +++ /dev/null @@ -1,3 +0,0 @@ -This project exists to test Polly.Caching.MemoryCache.Net40Async.csproj. - -Polly.Caching.MemoryCache.Net40Async.csproj is compiled against .NET4.5, and has to be, to use XUnit version 2.0, on which we depend. This is however a valid way of xunit-testing a .NET40 assembly. See https://github.com/xunit/xunit/issues/241#issuecomment-67725679 \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async/Polly.Caching.MemoryCache.Net40Async.csproj b/src/Polly.Caching.MemoryCache.Net40Async/Polly.Caching.MemoryCache.Net40Async.csproj deleted file mode 100644 index f8e94cc..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async/Polly.Caching.MemoryCache.Net40Async.csproj +++ /dev/null @@ -1,37 +0,0 @@ - - - Polly.Caching.MemoryCache - net40 - false - true - true - true - - - full - TRACE;DEBUG;NET40 - - - pdbonly - true - TRACE;RELEASE;NET40 - - - - - - - - - - - - - - - - Properties\GlobalAssemblyInfo.cs - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.Net40Async/Properties/AssemblyInfo.cs deleted file mode 100644 index 55f6c9b..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; -using System.Reflection; -using System.Runtime.CompilerServices; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache")] -[assembly: CLSCompliant(false)] // Because Nito.AsycEx, on which Polly.Net40Async depends, is not CLSCompliant. - - -[assembly: InternalsVisibleTo("Polly.Caching.MemoryCache.Net40Async.Specs")] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net40Async/app.config b/src/Polly.Caching.MemoryCache.Net40Async/app.config deleted file mode 100644 index e03ea0a..0000000 --- a/src/Polly.Caching.MemoryCache.Net40Async/app.config +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net45-Signed.Specs/Polly.Caching.MemoryCache.Net45-Signed.Specs.csproj b/src/Polly.Caching.MemoryCache.Net45-Signed.Specs/Polly.Caching.MemoryCache.Net45-Signed.Specs.csproj deleted file mode 100644 index 76fb0e3..0000000 --- a/src/Polly.Caching.MemoryCache.Net45-Signed.Specs/Polly.Caching.MemoryCache.Net45-Signed.Specs.csproj +++ /dev/null @@ -1,46 +0,0 @@ - - - false - net45 - Library - Polly.Caching.MemoryCache.Net45.Specs - - - full - TRACE;DEBUG;NET45 - - - pdbonly - true - TRACE;RELEASE;NET45 - - - - - - - - - - - - - - - - - - - - - Properties\GlobalAssemblyInfo.cs - - - - - - - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net45-Signed/Polly.Caching.MemoryCache.Net45-Signed.csproj b/src/Polly.Caching.MemoryCache.Net45-Signed/Polly.Caching.MemoryCache.Net45-Signed.csproj deleted file mode 100644 index ef77375..0000000 --- a/src/Polly.Caching.MemoryCache.Net45-Signed/Polly.Caching.MemoryCache.Net45-Signed.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - Polly.Caching.MemoryCache - - false - true - Polly.Caching.MemoryCache - false - net45 - true - - - full - TRACE;DEBUG;NET45 - - - pdbonly - TRACE;RELEASE;NET45 - - - - Properties\GlobalAssemblyInfo.cs - - - - - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net45-Signed/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.Net45-Signed/Properties/AssemblyInfo.cs deleted file mode 100644 index 441fb6a..0000000 --- a/src/Polly.Caching.MemoryCache.Net45-Signed/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; -using System.Reflection; -using System.Runtime.CompilerServices; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache")] -[assembly: CLSCompliant(true)] - -[assembly: InternalsVisibleTo("Polly.Caching.MemoryCache.Net45-Signed.Specs")] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net45.Specs/Polly.Caching.MemoryCache.Net45.Specs.csproj b/src/Polly.Caching.MemoryCache.Net45.Specs/Polly.Caching.MemoryCache.Net45.Specs.csproj deleted file mode 100644 index d139c72..0000000 --- a/src/Polly.Caching.MemoryCache.Net45.Specs/Polly.Caching.MemoryCache.Net45.Specs.csproj +++ /dev/null @@ -1,47 +0,0 @@ - - - false - net45 - Library - Polly.Caching.MemoryCache.Net45.Specs - Polly.Caching.MemoryCache.Net45.Specs - - - full - TRACE;DEBUG;NET45 - - - pdbonly - true - TRACE;RELEASE;NET45 - - - - - - - - - - - - - - - - - - - - - Properties\GlobalAssemblyInfo.cs - - - - - - - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net45/Polly.Caching.MemoryCache.Net45.csproj b/src/Polly.Caching.MemoryCache.Net45/Polly.Caching.MemoryCache.Net45.csproj deleted file mode 100644 index 5b3ff02..0000000 --- a/src/Polly.Caching.MemoryCache.Net45/Polly.Caching.MemoryCache.Net45.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - Polly.Caching.MemoryCache - - false - true - Polly.Caching.MemoryCache - false - net45 - true - - - full - TRACE;DEBUG;NET45 - - - pdbonly - TRACE;RELEASE;NET45 - - - - Properties\GlobalAssemblyInfo.cs - - - - - - - - \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.Net45/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.Net45/Properties/AssemblyInfo.cs deleted file mode 100644 index 1d669c6..0000000 --- a/src/Polly.Caching.MemoryCache.Net45/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; -using System.Reflection; -using System.Runtime.CompilerServices; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache")] -[assembly: CLSCompliant(true)] - -[assembly: InternalsVisibleTo("Polly.Caching.MemoryCache.Net45.Specs")] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.NetStandard13-Signed.Specs/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.NetStandard13-Signed.Specs/Properties/AssemblyInfo.cs deleted file mode 100644 index 3c9dfcf..0000000 --- a/src/Polly.Caching.MemoryCache.NetStandard13-Signed.Specs/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System.Reflection; -using Xunit; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache.NetStandard13.Specs")] -[assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.NetStandard13-Signed/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.NetStandard13-Signed/Properties/AssemblyInfo.cs deleted file mode 100644 index d326c20..0000000 --- a/src/Polly.Caching.MemoryCache.NetStandard13-Signed/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; -using System.Reflection; -using System.Runtime.CompilerServices; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache")] -[assembly: AssemblyVersion("1.1.0.0")] -[assembly: CLSCompliant(false)] // Because Microsoft.Extensions.Caching.Memory.MemoryCache, on which Polly.Caching.MemoryCache.NetStandard13 depends, is not CLSCompliant. - -[assembly: InternalsVisibleTo("Polly.Caching.MemoryCache.NetStandard13-Signed.Specs")] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.NetStandard13.Specs/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.NetStandard13.Specs/Properties/AssemblyInfo.cs deleted file mode 100644 index 3c9dfcf..0000000 --- a/src/Polly.Caching.MemoryCache.NetStandard13.Specs/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System.Reflection; -using Xunit; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache.NetStandard13.Specs")] -[assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.NetStandard13/Properties/AssemblyInfo.cs b/src/Polly.Caching.MemoryCache.NetStandard13/Properties/AssemblyInfo.cs deleted file mode 100644 index a1f667c..0000000 --- a/src/Polly.Caching.MemoryCache.NetStandard13/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; -using System.Reflection; -using System.Runtime.CompilerServices; - -[assembly: AssemblyTitle("Polly.Caching.MemoryCache")] -[assembly: AssemblyVersion("1.1.0.0")] -[assembly: CLSCompliant(false)] // Because Microsoft.Extensions.Caching.Memory.MemoryCache, on which Polly.Caching.MemoryCache.NetStandard13 depends, is not CLSCompliant. - -[assembly: InternalsVisibleTo("Polly.Caching.MemoryCache.NetStandard13.Specs")] \ No newline at end of file diff --git a/src/Polly.Caching.MemoryCache.sln b/src/Polly.Caching.MemoryCache.sln deleted file mode 100644 index 2b2a87b..0000000 --- a/src/Polly.Caching.MemoryCache.sln +++ /dev/null @@ -1,111 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26430.16 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{79FE9DBE-1155-4F78-A41F-FE95DEFA19DD}" - ProjectSection(SolutionItems) = preProject - GlobalAssemblyInfo.cs = GlobalAssemblyInfo.cs - Polly.nuspec = Polly.nuspec - EndProjectSection -EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Polly.Caching.MemoryCache.Shared", "Polly.Caching.MemoryCache.Shared\Polly.Caching.MemoryCache.Shared.shproj", "{23FA87F9-C77D-4C67-A0B0-2901DE51B3FF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.Net45", "Polly.Caching.MemoryCache.Net45\Polly.Caching.MemoryCache.Net45.csproj", "{29265540-F724-4324-9321-643A0FCB133F}" -EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Polly.Caching.MemoryCache.SharedSpecs", "Polly.Caching.MemoryCache.SharedSpecs\Polly.Caching.MemoryCache.SharedSpecs.shproj", "{8D537C37-A4A2-4BE1-84BC-34F1AFB51CA8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.Net45.Specs", "Polly.Caching.MemoryCache.Net45.Specs\Polly.Caching.MemoryCache.Net45.Specs.csproj", "{5F2BD87D-A7ED-433D-B7E3-F3072D07C1DC}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.NetStandard13.Specs", "Polly.Caching.MemoryCache.NetStandard13.Specs\Polly.Caching.MemoryCache.NetStandard13.Specs.csproj", "{4AB46D16-0806-4F51-8677-D849BA87CB05}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.Net40Async", "Polly.Caching.MemoryCache.Net40Async\Polly.Caching.MemoryCache.Net40Async.csproj", "{D6A676C2-982D-42D1-AD21-FA53582A1C31}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.NetStandard13", "Polly.Caching.MemoryCache.NetStandard13\Polly.Caching.MemoryCache.NetStandard13.csproj", "{5017174E-DAC5-4408-AB15-1F902F40C612}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.Net40Async.Specs", "Polly.Caching.MemoryCache.Net40Async.Specs\Polly.Caching.MemoryCache.Net40Async.Specs.csproj", "{65062661-9E19-4FC6-859C-8B7811553E13}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.NetStandard13-Signed", "Polly.Caching.MemoryCache.NetStandard13-Signed\Polly.Caching.MemoryCache.NetStandard13-Signed.csproj", "{AB362411-9786-4A45-8CBC-8BA88059D07C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.NetStandard13-Signed.Specs", "Polly.Caching.MemoryCache.NetStandard13-Signed.Specs\Polly.Caching.MemoryCache.NetStandard13-Signed.Specs.csproj", "{AE19DF09-C475-46EC-96FE-A7E979219B92}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.Net45-Signed", "Polly.Caching.MemoryCache.Net45-Signed\Polly.Caching.MemoryCache.Net45-Signed.csproj", "{8414F33A-125C-4405-8592-FAAAB6D60A7D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.Net45-Signed.Specs", "Polly.Caching.MemoryCache.Net45-Signed.Specs\Polly.Caching.MemoryCache.Net45-Signed.Specs.csproj", "{89EFC94C-0EF2-4107-A5E7-31FB56BEEB3F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.Net40Async-Signed", "Polly.Caching.MemoryCache.Net40Async-Signed\Polly.Caching.MemoryCache.Net40Async-Signed.csproj", "{9CD5DB68-4CB9-400F-B73C-80E7B2016DBC}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Polly.Caching.MemoryCache.Net40Async-Signed.Specs", "Polly.Caching.MemoryCache.Net40Async-Signed.Specs\Polly.Caching.MemoryCache.Net40Async-Signed.Specs.csproj", "{3188A9F5-4B54-4E22-BDCA-C3970586008B}" -EndProject -Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - Polly.Caching.MemoryCache.Shared\Polly.Caching.MemoryCache.Shared.projitems*{23fa87f9-c77d-4c67-a0b0-2901de51b3ff}*SharedItemsImports = 13 - Polly.Caching.MemoryCache.Shared\Polly.Caching.MemoryCache.Shared.projitems*{29265540-f724-4324-9321-643a0fcb133f}*SharedItemsImports = 4 - Polly.Caching.MemoryCache.SharedSpecs\Polly.Caching.MemoryCache.SharedSpecs.projitems*{4ab46d16-0806-4f51-8677-d849ba87cb05}*SharedItemsImports = 4 - Polly.Caching.MemoryCache.Shared\Polly.Caching.MemoryCache.Shared.projitems*{5017174e-dac5-4408-ab15-1f902f40c612}*SharedItemsImports = 4 - Polly.Caching.MemoryCache.SharedSpecs\Polly.Caching.MemoryCache.SharedSpecs.projitems*{5f2bd87d-a7ed-433d-b7e3-f3072d07c1dc}*SharedItemsImports = 4 - Polly.Caching.MemoryCache.SharedSpecs\Polly.Caching.MemoryCache.SharedSpecs.projitems*{65062661-9e19-4fc6-859c-8b7811553e13}*SharedItemsImports = 4 - Polly.Caching.MemoryCache.SharedSpecs\Polly.Caching.MemoryCache.SharedSpecs.projitems*{8d537c37-a4a2-4be1-84bc-34f1afb51ca8}*SharedItemsImports = 13 - Polly.Caching.MemoryCache.Shared\Polly.Caching.MemoryCache.Shared.projitems*{d6a676c2-982d-42d1-ad21-fa53582a1c31}*SharedItemsImports = 4 - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {29265540-F724-4324-9321-643A0FCB133F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {29265540-F724-4324-9321-643A0FCB133F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {29265540-F724-4324-9321-643A0FCB133F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {29265540-F724-4324-9321-643A0FCB133F}.Release|Any CPU.Build.0 = Release|Any CPU - {5F2BD87D-A7ED-433D-B7E3-F3072D07C1DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5F2BD87D-A7ED-433D-B7E3-F3072D07C1DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5F2BD87D-A7ED-433D-B7E3-F3072D07C1DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5F2BD87D-A7ED-433D-B7E3-F3072D07C1DC}.Release|Any CPU.Build.0 = Release|Any CPU - {4AB46D16-0806-4F51-8677-D849BA87CB05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4AB46D16-0806-4F51-8677-D849BA87CB05}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4AB46D16-0806-4F51-8677-D849BA87CB05}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4AB46D16-0806-4F51-8677-D849BA87CB05}.Release|Any CPU.Build.0 = Release|Any CPU - {D6A676C2-982D-42D1-AD21-FA53582A1C31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D6A676C2-982D-42D1-AD21-FA53582A1C31}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D6A676C2-982D-42D1-AD21-FA53582A1C31}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D6A676C2-982D-42D1-AD21-FA53582A1C31}.Release|Any CPU.Build.0 = Release|Any CPU - {5017174E-DAC5-4408-AB15-1F902F40C612}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5017174E-DAC5-4408-AB15-1F902F40C612}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5017174E-DAC5-4408-AB15-1F902F40C612}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5017174E-DAC5-4408-AB15-1F902F40C612}.Release|Any CPU.Build.0 = Release|Any CPU - {65062661-9E19-4FC6-859C-8B7811553E13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {65062661-9E19-4FC6-859C-8B7811553E13}.Debug|Any CPU.Build.0 = Debug|Any CPU - {65062661-9E19-4FC6-859C-8B7811553E13}.Release|Any CPU.ActiveCfg = Release|Any CPU - {65062661-9E19-4FC6-859C-8B7811553E13}.Release|Any CPU.Build.0 = Release|Any CPU - {AB362411-9786-4A45-8CBC-8BA88059D07C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AB362411-9786-4A45-8CBC-8BA88059D07C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AB362411-9786-4A45-8CBC-8BA88059D07C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AB362411-9786-4A45-8CBC-8BA88059D07C}.Release|Any CPU.Build.0 = Release|Any CPU - {AE19DF09-C475-46EC-96FE-A7E979219B92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AE19DF09-C475-46EC-96FE-A7E979219B92}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AE19DF09-C475-46EC-96FE-A7E979219B92}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AE19DF09-C475-46EC-96FE-A7E979219B92}.Release|Any CPU.Build.0 = Release|Any CPU - {8414F33A-125C-4405-8592-FAAAB6D60A7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8414F33A-125C-4405-8592-FAAAB6D60A7D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8414F33A-125C-4405-8592-FAAAB6D60A7D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8414F33A-125C-4405-8592-FAAAB6D60A7D}.Release|Any CPU.Build.0 = Release|Any CPU - {89EFC94C-0EF2-4107-A5E7-31FB56BEEB3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {89EFC94C-0EF2-4107-A5E7-31FB56BEEB3F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {89EFC94C-0EF2-4107-A5E7-31FB56BEEB3F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {89EFC94C-0EF2-4107-A5E7-31FB56BEEB3F}.Release|Any CPU.Build.0 = Release|Any CPU - {9CD5DB68-4CB9-400F-B73C-80E7B2016DBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9CD5DB68-4CB9-400F-B73C-80E7B2016DBC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9CD5DB68-4CB9-400F-B73C-80E7B2016DBC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9CD5DB68-4CB9-400F-B73C-80E7B2016DBC}.Release|Any CPU.Build.0 = Release|Any CPU - {3188A9F5-4B54-4E22-BDCA-C3970586008B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3188A9F5-4B54-4E22-BDCA-C3970586008B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3188A9F5-4B54-4E22-BDCA-C3970586008B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3188A9F5-4B54-4E22-BDCA-C3970586008B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {225C7584-19D4-4811-B41C-C4788F609986} - EndGlobalSection -EndGlobal