c# - EF Core 2.0.0 和 Redis.Core 1.0.3 不能一起工作

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

我尝试设置一个使用 EF core 2.0.0 的 .net 核心控制台应用程序和 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()));
        }
    }
}

有任何想法或解决方案吗?

最佳答案

问题是

  • 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: Method GetAsync in type Microsoft.Extensions.Caching.Redis.RedisCache from assembly 'Microsoft.Extensions.Caching.Redis, Version=1.0.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.

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

关于c# - EF Core 2.0.0 和 Redis.Core 1.0.3 不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46669196/

相关文章:

c# - 如何在 C# 中使用正则表达式获取所有表名?

c# - 我可以将这段代码简化为一行吗

azure - 正在为 Azure 应用服务中的多个虚拟应用程序配置 AspNetCoreModuleV2

c# - 如何在 .Net Core 2.2 中正确使用 ConfigurationManager.GetSection()

c# - 把逗号放在小数中

c# - 将 JSON 值传递给 Web 方法返回 'Unknown web method DoesUserExist. Parameter name: methodName' 错误

sinatra - resque worker 负载分配不公平

redis - 从有序集合中删除元素 - ZREM

java - 如何以干净的方式在 Spring Data Redis 中实现事务?

c# - 如何为所有目标框架发布