VS.NET 2017强制在ASP.NET 2.0 Core应用程序中使用StackExchange.Redis 1.2.4.0

我正在使用Visual Studio 2017.我刚刚创建了一个新的ASP.NET Core 2.0项目。 我试图使用NuGet来引入最新的StackExchange.Redis 1.2.6(截至9/3/2017)。

但是,一旦我这样做,Visual Studio就会抱怨我的一个RedisResult变量中存在冲突的引用。 它说

错误CS0433类型’RedisResult’存在于’StackExchange.Redis.StrongName,Version = 1.2.4.0,Culture = neutral,PublicKeyToken = c219ff1ca8c2ce46’和’StackExchange.Redis,Version = 1.2.6.0,Culture = neutral,PublicKeyToken = null ‘服务器C:\ git \ Splash \ Server \ BackPlaneConnection \ Channel.cs 19有效

然后,我发现我不需要手动添加任何NuGet包,以便在我的ASP.NET Core 2.0应用程序中使用StackExchange.Redis。 实际上,如果我手动添加对不同版本的StackExchange.Redis的引用,则会导致我在上面显示的解决冲突。

检查构建输出。 DLL实际上来自C:\ Program Files \ dotnet \ sdk \ NuGetFallbackFolder \ stackexchange.redis.strongname

我尝试删除stackexchange.redis.strongname但它仍然以某种方式自动将其下载到我的个人nuget文件夹。

几乎感觉ASP.NET Core 2.0内部需要StackExchange.Redis 1.2.4.0,但这对我来说真的没有意义。

使用ASP.NET Core 1.1时,我没有遇到同样的问题。 有没有办法让我的ASP.NET Core 2.0使用来自NuGet的最新StackExchange.Redis?

找到原因。 这是因为默认情况下VS.NET 2017打开了“允许NuGet下载丢失的软件包”。 构建屏幕也提到了这一点。

还原NuGet包…要防止NuGet在构建期间还原包,请打开“Visual Studio选项”对话框,单击“包管理器”节点,然后取消选中“允许NuGet在构建期间下载缺少的包”。

在我的情况下,为了完全避免这个问题,我需要执行以下步骤来解决我的问题。

  1. 转到Visual Studio选项对话框。
  2. 取消选中“允许NuGet下载丢失的软件包”,以避免将来自动下载NuGet软件包
  3. 打开NuGet Manager以添加最新的StackExchange.Redis包
  4. 单击“清除所有NuGet缓存”以清除旧的NuGet缓存

我在“StackExchange.Redis”包中添加了一个条件标志,这使它工作。 我尝试在两台机器上的两个新项目上修复此问题。 不要问我为什么会这样。

  netcoreapp2.0            

我在我的重复问题中给出了相同的答案