2017-10-10 59 views
2

我试图设置一个使用EF core 2.0.0Redis.Core 1.0.3(都是当前最新版本)的.net核心控制台应用程序。EF Core 2.0.0和Redis.Core 1.0.3不能一起工作

不幸的是,如果您尝试将两者都放入一个应用程序,它甚至不会启动。即使您尝试在开始处设置断点,或者开始使用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())); 
     } 
    } 
} 

任何人的想法或解决方案?

回答

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程序集 'Microsoft.Extensions.Caching.Redis,Version = 1.0.3.0,Culture = neutral, PublicKeyToken = adb9793829ddae60'没有实现。

于是:要么等到RedisCache被更新为2.0.0或使用EntityFrameworkCore < 2.0.0