ASP Net Core应用程序中出现MSB3277时该怎么办

时间:2018-09-25 10:47:14

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

我正在使用引用EntityFrameworkCore 2.1.3包的数据库项目,但是AspNetCore.App-meta包包含EntityFrameworkCore 2.1.2。引入数据库项目后,我得到以下msbuild-warning:

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

我在Google上搜索了一下,发现了这个文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.1

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

预先感谢

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

在这种情况下,引用这些软件包的推荐方法是在您的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的最新版本。

答案 2 :(得分:0)

我的问题是相同的

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

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

当我将家用计算机升级到最新的当前版本(2.2.300)时,问题已解决

我希望这个解决方案对其他人也能起作用。我尝试了所有其他方法。