2017-10-10 4 views
2

J'ai essayé de configurer une application de console de noyau .net qui utilise EF core 2.0.0 et Redis.Core 1.0.3 (les deux sont la dernière version actuelle). Malheureusement, si vous essayez de mettre les deux dans une application, il ne démarrera même pas. Même si vous essayez de définir un point d'arrêt dès le début ou commencer le débogage avec Step into ou Step Over n'aide pas. Tout ce que vous obtenez est le suivant: The application is in break modeEF Core 2.0.0 et Redis.Core 1.0.3 ne fonctionnent pas ensemble

Je pense qu'il se produit une sorte d'exception de type load ou quelque chose de similaire. Jusqu'à présent, pour reproduire le problème est assez facile avec ce projet:

Fichier de projet (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> 

application (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())); 
     } 
    } 
} 

Y'a quelqu'un une idée ou d'une solution?

Répondre

2

Le problème est que

  • Microsoft.Extensions.Caching.Redis.RedisCache 1.0.3 dépend de Microsoft.Extensions.Caching.Abstractions 1.0.3
  • Microsoft.EntityFrameworkCore 2.0.0 dépend de Microsoft.Extensions.Caching.Abstractions 2.0.0

Si vous regardez la fenêtre de sortie, vous obtiendrez:

TypeLoadException : Méthode GetAsync dans le type Microsoft.Extensions.Caching.Redis.RedisCache de l'assembly 'Microsoft.Extensions.Caching.Redis, Version = 1.0.3.0, Culture = neutre, PublicKeyToken = adb9793829ddae60' n'a pas une implémentation.

donc: soit attendre que RedisCache soit mis à jour à 2.0.0 ou utiliser EntityFrameworkCore < 2.0.0