StackExchange.Redis.IDatabase存在于两个dll中

时间:2015-07-17 10:15:50

标签: asp.net-mvc redis

我安装了Redis StackExchange nuget并且工作正常。但后来我安装了RedisSessionStateProvider nuget,它安装了StackExchange.Redis.StrongName。

现在我收到以下错误,

  

错误107两者中都存在“StackExchange.Redis.IDatabase”类型   'E:\来源\包\ StackExchange.Redis.1.0.481 \ LIB \ net45 \ StackExchange.Redis.dll'   和   'e:\ Source \ packages \ StackExchange.Redis.StrongName.1.0.481 \ lib \ net45 \ StackExchange.Redis.StrongName.dll'E:\ Source \ MyApp \ Helpers \ RedisHelper \ StackExchangeRedisExtensions.cs 13 37 MyApp

为什么会这样?

3 个答案:

答案 0 :(得分:8)

强名称的dll与非强名称的dll名称空间之间存在很多混淆。

您可以使用extern alias轻松解决此问题。

  1. 右键单击项目引用并选择要引用的dll,转到属性窗口。然后,将Aliases字段值更改为您想要的任何值。例如:“Redis”。
  2. 然后转到您的消费者源文件并添加:

    extern alias Redis;
    
    using System;
    // ... other references
    using Redis::StackExchange.Redis;
    
    namespace Foo
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                using (ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("myConn"))
                {
                    // use StackExchange API here.
                }
            }
        }
    }
    
  3. 还有一个issue on StackExchange's repository解释了有关StrongName与Non-StrongName的更多信息。

答案 1 :(得分:4)

以上两个dll中的某些方法/属性/接口是duplicated

删除StackExchange.Redis引用以解决错误。

答案 2 :(得分:-1)

我在ASP.NET核心应用中遇到了这个问题,this答案很快就解决了我的问题。