我正在运行Visual Studio 2015 Update 3.我正在尝试将Redis缓存用于.Net核心应用程序。从那时起,开发的软件包就是针对.Net标准库。我从github下载了代码并试图改变我自己的依赖。
以下是项目:
首先,我试图将抽象类库定位为目标。 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有何不同,因为它们是我安装的软件包的依赖项?
为什么所有软件包都支持.NET Standard Libary而不支持.NET Core?
答案 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.json
(Microsoft.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。