title: How to use MemoryCache in C# Core Console app?
body: <p>I would like to use the Microsoft.Extensions.Caching.Memory.MemoryCache in a .NET Core 2.0 console app (Actually, in a library that is either used in a console or in a asp.net app)</p>
  
  <p>I've created a test app:</p>
  
  <pre><code>using System;
  
  namespace ConsoleTest
  {
      class Program
      {
          static void Main(string[] args)
          {
              var cache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions());
  
              int count = cache.Count;
              cache.CreateEntry("item1").Value = 1;
              int count2 = cache.Count;
              cache.TryGetValue("item1", out object item1);
              int count3 = cache.Count;
              cache.TryGetValue("item2", out object item2);
              int count4 = cache.Count;
  
              Console.WriteLine("Hello World!");
          }
      }
  }
  </code></pre>
  
  <p>Unfortunately, this is not working. The items are not added to the cache and they can not be retrieved. </p>
  
  <p>I suspect I need to use DependencyInjection, doing something like this:</p>
  
  <pre><code>using System;
  using Microsoft.Extensions.DependencyInjection;
  
  namespace ConsoleTest
  {
      class Program
      {
          static void Main(string[] args)
          {
              var provider = new Microsoft.Extensions.DependencyInjection.ServiceCollection()
                  .AddMemoryCache()
                  .BuildServiceProvider();
  
              //And now?
  
              var cache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions());
  
              var xxx = PSP.Helpers.DependencyInjection.ServiceProvider;
              int count = cache.Count;
              cache.CreateEntry("item1").Value = 1;
              int count2 = cache.Count;
              cache.TryGetValue("item1", out object item1);
              int count3 = cache.Count;
              cache.TryGetValue("item2", out object item2);
              int count4 = cache.Count;
  
              Console.WriteLine("Hello World!");
          }
      }
  }
  </code></pre>
  
  <p>Unfortunately, this is also not working, I suspect I shouldn't create a new memory cache, but get it from the service provider, but haven't been able to do that.</p>
  
  <p>Any ideas?</p>