尝试解决依赖关系:将.NET标准库更改为.NET Core - Microsoft.Extensions.Primitives

时间:2016-11-02 18:13:31

标签: redis .net-core nuget-package .net-standard

我正在运行Visual Studio 2015 Update 3.我正在尝试将Redis缓存用于.Net核心应用程序。从那时起,开发的软件包就是针对.Net标准库。我从github下载了代码并试图改变我自己的依赖。

以下是项目:

enter image description here

首先,我试图将抽象类库定位为目标。 Net Core ,然后我尝试添加 Microsoft.Extensions.Primitives ,因为版本1不支持.NET Core。我添加了最终的预包装:

Install-Package Microsoft.Extensions.Primitives -Version 1.0.0-rc1-final -Pre

无法解决,说

  

无法解析依赖项Microsoft.Extensions.Primitives> = 1.0.0-rc1-final。

如何解决这个问题以使其适用于.NET Core? .NET Core 1与.NET Core 5有何不同,因为它们是我安装的软件包的依赖项?

enter image description here

为什么所有软件包都支持.NET Standard Libary而不支持.NET Core?

1 个答案:

答案 0 :(得分:1)

Dunno你究竟在做什么,但是rc1引用看起来是错误的,现在ASP.NET Core RTM已经出现了几个月。

我抓住了1.0.0源代码(你必须专门选择1.0.0标签。主分支基于ASP.NET Core 1.1)。

我唯一改变的是project.json(我卸载了除Microsoft.Extensions.Caching.Redis.Test以外的其他已卸载的无关项目和测试项目。

这是我的project.jsonMicrosoft.Extensions.Caching.Redis):

{
  "version": "1.0.0",
  "description": "Distributed cache implementation of Microsoft.Extensions.Caching.Distributed.IDistributedCache using Redis.",
  "packOptions": {
    "repository": {
      "type": "git",
      "url": "https://github.com/aspnet/caching"
    },
    "tags": [
      "cache",
      "distributedcache",
      "redis"
    ]
  },
  "buildOptions": {
    "warningsAsErrors": true,
    "keyFile": "../../tools/Key.snk",
    "nowarn": [
      "CS1591"
    ],
    "xmlDoc": true
  },
  "dependencies": {
    "Microsoft.Extensions.Caching.Abstractions": "1.0.0",
    "Microsoft.Extensions.Options": "1.0.0",
    "StackExchange.Redis.StrongName": "1.1.608"
  },
  "frameworks": {
    "netstandard1.5": { },
    "net451": {
      "dependencies": { },
      "frameworkAssemblies": {
        "System.Runtime": {
          "type": "build"
        }
      }
    }
  }
}

Microsoft.Extensions.Caching.Abstractions无需更改。

或者,您可以使用StackExchange.Redis代替StackExchange.Redis.StrongName,而不是强名称(已签名)。不确定这样创建/编译的包是否将使用与其他包相同的密钥进行签名,这可能会在以后产生问题。如果您使用未签名的,那么如果您的应用程序本身名称很强(或者您的业务要求所有程序集都是强签名的),它也可能会产生问题。

这个编译和单元测试通过,没有进一步测试。

关于你的其余问题:

“。NET Core 5”nuget目标是dnx50,直到ASP.NET Core rc1才用完。使用rc2 ASP.NET Core切换到dotnet-cli并且DNX现在不受支持,并且不会再接收任何更新。使用rc2引入了netstandard来简化类库的创建,这些类可以定位大多数可用的平台(完整的.NET Framework,.NET Core,WinRT / WindowsPhone / Windows8 / Windows10,mono,Xamarin等)。您可以详细了解.NET Standard Library