EF Core 2.0.0和Redis.Core 1.0.3无法一起使用

时间:2017-10-10 14:23:23

标签: c# redis .net-core entity-framework-core

我尝试设置一个使用EF core 2.0.0Redis.Core 1.0.3的.net核心控制台应用程序(两者都是当前的最新版本)。

不幸的是,如果你试图将两者放在一个应用程序中,它甚至都不会启动。即使您尝试在开头设置断点或使用Step intoStep Over开始调试也无济于事。你得到的就是: The application is in break mode

我认为会发生某种类型的加载异常或类似的东西。到目前为止,使用这个项目很容易重现这个问题:

项目文件(MyProject.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Caching.Redis.Core" Version="1.0.3" />
  </ItemGroup>

</Project>

申请(Program.cs

using Microsoft.Extensions.Caching.Redis;
using Microsoft.Extensions.Options;

namespace MyApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            var cache = new RedisCache(Options.Create(new RedisCacheOptions()));
        }
    }
}

有人有想法或解决方案吗?

1 个答案:

答案 0 :(得分:2)

问题在于

  • Microsoft.Extensions.Caching.Redis.RedisCache 1.0.3取决于Microsoft.Extensions.Caching.Abstractions 1.0.3
  • Microsoft.EntityFrameworkCore 2.0.0取决于Microsoft.Extensions.Caching.Abstractions 2.0.0

如果你看一下输出窗口,你会得到:

  

TypeLoadException:类型中的方法GetAsync   汇编Microsoft.Extensions.Caching.Redis.RedisCache   &#39; Microsoft.Extensions.Caching.Redis,Version = 1.0.3.0,Culture = neutral,   公钥= adb9793829ddae60&#39;没有实施。

所以:要等到RedisCache更新为2.0.0或使用EntityFrameworkCore < 2.0.0