我有一个Asp.Net Core 2 Mvc项目。我目前正在尝试将数据访问权限分离到一个单独的项目中;但是,将引用添加到数据访问库后,就会发生版本冲突:
错误NU1107:检测到版本冲突 Microsoft.AspNetCore.Cryptography.Internal。参考包装 直接从项目中解决该问题。
错误NU1107:MySite.Web-> MySite.DataAccess-> Microsoft.Extensions.Identity.Stores 2.1.1-> Microsoft.Extensions.Identity.Core 2.1.1-> Microsoft.AspNetCore.Cryptography.KeyDerivation 2.1.1-> Microsoft.AspNetCore.Cryptography.Internal(> = 2.1.1)
错误NU1107:MySite.Web-> Microsoft.AspNetCore.App 2.1.0-> Microsoft.AspNetCore.Cryptography.Internal(= 2.1.0)。
我尝试改为引用实体框架身份,但它给出了相同的错误,但使用身份验证库。
我想以下几行是非常重要的建议:
直接从项目中引用软件包以解决此问题 问题。
但是,我不确定这到底是什么意思。我最初的想法是,我会在sed -i -re 's#obj/buildtools/third_party/libc[^[:space:]]*\s*##g' obj/webrtc.ninja
find . -type f -name \*.ninja -a ! -name \*libc++* -exec sed -i -re 's/\s*-nostd(inc|lib)\+\+//' {} \+
find . -type f -name \*.ninja -a ! -name \*libc++* -exec sed -i -re 's/\s*\S*isystem\S*libc\+\+\S*//g' {} \+
find . -type f -name \*.ninja -exec sed -i -re 's#(--sysroot=)[^[:space:]]*#\1/#' {} \+
find . -type f -name \*.ninja -exec sed -i -re 's#(-L)[^[:space:]]*-sysroot#\1#g' {} \+
find . -type f -name \*.ninja -exec sed -i -re 's#(rpath-link=)[^[:space:]]*-sysroot#\1#g' {} \+
项目中引用该软件包,但具体版本为2.1.0;但是当我这样做时,我会连续不断地以完美的方式重定向回该库。
答案 0 :(得分:7)
发生这种情况的原因是您本地安装的Microsoft.AspNetCore.App的版本为2.1.0,而不是2.1.1。
要进行更新,您需要安装最新的SDK /运行时。
您可以在https://dot.net上找到它
只需转到下载并下载包含最新2.1.1运行时的2.1 SDK(v2.1.301)。
希望对您有帮助!
答案 1 :(得分:1)
您需要安装特定版本,例如.net核心为2.2,则仅需要安装Entity Framework 2.2,否则需要更新.net核心版本,但对于Visual Studio 2017,它仅适用于.net核心2.2租用版本,因此您需要根据Visual Studio 2017的.net核心版本进行安装。
请查看两个屏幕截图,以供您进一步参考。
答案 2 :(得分:0)
尝试更新SDK
如果没有安装软件包或与软件包不兼容
尝试从主项目的.csproj文件更改版本
<PropertyGroup>
<TargetFramework>
netcoreapp2.1
</TargetFramework>
</PropertyGroup>
答案 3 :(得分:0)
就我而言,我已经更新了我的项目之一以使用Microsoft.Extensions.Identity v3.0,这导致了错误-为Microsoft.AspNetCore.Cryptography.Internal检测到版本冲突。不是很直观的错误消息,但是将引用的项目回滚到Microsoft。Extensions.Identity2.2解决了该问题。
答案 4 :(得分:-1)
删除有冲突的参考,然后重试