Dav*_*ave 5 c# asp.net-web-api .net-core
我正在尝试为Controller扩展方法编写单元测试,但是在Test项目的生成过程中,我收到以下错误消息。
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'
两个项目都<TargetFramework>netcoreapp2.1</TargetFramework>在其.csproj文件中声明。我尝试删除bin和obj文件夹。一个项目如何解决Mvc.Core, Version=2.1.0.0而另一个项目如何解决Mvc.Core, Version 2.1.1.0?
小智 17
<PackageReference Include="Microsoft.AspNetCore.App" />
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,将这一行添加到单元测试项目后,它开始选择Microsoft.AspNetCore.App的正确版本。
更新
下面提到的问题已得到修复,您应该能够从隐式包版本控制和如下参考中受益,而无需提供包的版本号。
<PackageReference Include="Microsoft.AspNetCore.App" />
Run Code Online (Sandbox Code Playgroud)
原答案
此问题是由于为 Microsoft.AspNetCore.App 元包引入的隐式版本控制。通过隐式版本控制,sdk 决定版本并将其解析为 2.1.1
但是,它正在解析为 nunit 测试项目的 2.1 版。指定 nunit 项目的版本号<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1"/>和执行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
| 归档时间: |
|
| 查看次数: |
1010 次 |
| 最近记录: |