【问题标题】:What to do if MSB3277 occurs in asp net core appasp net core app出现MSB3277怎么办
【发布时间】:2018-09-25 10:47:13
【问题描述】:

我正在使用引用 EntityFrameworkCore 2.1.3 包的数据库项目,但 AspNetCore.App-metapackage 包含 EntityFrameworkCore 2.1.2。引入我的数据库项目后,我得到了这个 msbuild 警告:

Warning MSB3277 Found conflicts between different versions of "Microsoft.EntityFrameworkCore" that could not be resolved.

我用谷歌搜索了一下,找到了这个文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.1

我正在使用依赖于 2.1.3 的第三方库(NpgSql for Postgre)... 我应该降级所有软件包,以便它们使用 efcore 2.1.2 软件包还是应该忽略此警告?或者更好的问题:哪种方式不那么痛苦?

提前致谢

【问题讨论】:

标签: c# asp.net-core .net-core nuget npgsql


【解决方案1】:

确实,Npgsql.EntityFrameworkCore.PostgreSQL 目前是 2.1.2 版本,并且依赖于 Microsoft.EntityFrameworkCore 2.1.2。但是,将旧版本的 Npgsql EF Core 提供程序与 EF Core 本身的较新补丁版本一起使用应该没有任何问题。

您可以通过在自己的项目中直接依赖 Microsoft.EntityFrameworkCore 2.1.3 来消除此警告。

【讨论】:

  • ^ 这个。隐式依赖会在后面咬你。为 EF Core 本身添加显式包引用。
【解决方案2】:

在这种情况下引用这些包的推荐方法是在您的 Web 项目中引用无版本的应用元包:

<PackageReference Include="Microsoft.AspNetCore.App" />

在库项目中,您应该只引用补丁级别为 0 的次要版本:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.0" />

在引用该项目时,共享框架将自动使 EF Core 引用前滚到已安装的 .NET Core 运行时的当前版本。

如果您无法降级该库项目中的 EF Core 引用,最好的解决方案可能是将您的 .NET Core SDK/运行时升级到 2.1.4,以便您运行包含 EF Core 2.1.3 的最新版本.

【讨论】:

  • 嗨,最重要的是:感谢您的回答!元包是无版本的,我已经安装了最新的 sdk - 如果我尝试更改 nuget 版本,我无法使用 Info : Blocked by project。即使我创建一个新项目我也不能使用高于 2.1.1 的版本
  • 我想我为此提出了一个新问题..这超出了这个问题的范围......
【解决方案3】:

我的问题是一样的

“警告 MSB3277 发现不同版本的“Microsoft.AspNetCore.App”之间存在无法解决的冲突。”

我在电脑上用.net core sdk 2.2.204开发了项目。当我将项目从 GIT 复制到我的家用计算机时出现此错误。当我尝试 VS2017 和 VS2019 时,什么都没有改变。实际问题是 SDK 冲突。 SDK 2.2.104 是 VS2017 的最后一个稳定版本。

当我将我的家用电脑升级到最新的当前版本 (2.2.300) 后,问题就解决了

我希望此解决方案对其他人有效。其他方法我都试过了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2017-08-03
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    相关资源
    最近更新 更多