AspNetCore.Mvc.Core 版本不匹配

Posted

技术标签:

【中文标题】AspNetCore.Mvc.Core 版本不匹配【英文标题】:AspNetCore.Mvc.Core Version Mismatch 【发布时间】:2019-06-27 10:34:47 【问题描述】:

我正在尝试为控制器扩展方法编写单元测试,但在测试项目的构建过程中,我收到以下错误消息。

MyControllerExtensionsTests.cs(17, 26): [CS1705] Assembly 'MyApp.RestApi' with identity 'MyApp.RestApi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'Microsoft.AspNetCore.Mvc.Core, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' which has a higher version than referenced assembly 'Microsoft.AspNetCore.Mvc.Core' with identity 'Microsoft.AspNetCore.Mvc.Core, Version=2.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'

两个项目都在其.csproj 文件中声明<TargetFramework>netcoreapp2.1</TargetFramework>。我试过删除binobj 文件夹。一个项目如何解析为Mvc.Core, Version=2.1.0.0 和另一个Mvc.Core, Version 2.1.1.0

【问题讨论】:

能不能把.csproj里的RuntimeFrameworkVersion标签里的版本改一下看看? @karthickj25 不,问题不在于框架版本 实际问题是您在项目中使用的 NuGet 包。一个针对 2.1.1,另一个针对 2.1.0 @CamiloTerevinto,<PackageReference Include="Microsoft.AspNetCore.App" /> 中缺少 Version 属性,它以某种方式自动解析为 2.1.0。通过 Nuget 将包升级到2.1.1 并没有设置版本属性,导致版本保持在2.1.0。在.csproj 中手动设置版本解决了这个问题。 【参考方案1】:
<PackageReference Include="Microsoft.AspNetCore.App" />

我遇到了同样的问题,将此行添加到单元测试项目后,它开始选择正确版本的 Microsoft.AspNetCore.App。

【讨论】:

【参考方案2】:

更新

下面提到的问题已得到修复,您应该能够受益于隐式包版本控制和下面的参考,而无需提供包的版本号。

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

原答案

此问题是因为为 Microsoft.AspNetCore.App 元包引入的隐式版本控制。通过隐式版本控制,sdk 决定版本并将其解析为 2.1.1

但是,对于 nunit 测试项目,它正在解析为 2.1 版。指定 nunit 项目的版本号,如 &lt;PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1"/&gt; 并执行 dotnet restore 有助于解决此问题。

在 github 上有针对此问题的票证,这种关于隐式版本控制的行为将来可能会改变 - https://github.com/aspnet/AspNetCore.Docs/issues/6430 和 https://github.com/dotnet/core/blob/master/release-notes/1.0/sdk/1.0-rc3-implicit-package-refs.md

【讨论】:

以上是关于AspNetCore.Mvc.Core 版本不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Spark读取Hive时schema版本不匹配的解决方法

httpclient与httpcore版本不匹配导致的编译问题

vue版本不匹配

Angular Material 版本 (12.1.4) 与 Angular CDK 版本 (12.2.1) 不匹配。请确保这两个包的版本完全匹配

React Native 版本不匹配

“分面项目问题(Java 版本不匹配)”错误消息