AspNetCore.Mvc.Core版本不匹配

时间:2019-02-03 13:32:55

标签: 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。我尝试删除binobj文件夹。一个项目如何解决Mvc.Core, Version=2.1.0.0而另一个问题Mvc.Core, Version 2.1.1.0

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

但是,它已将nunit测试项目解析为2.1版。指定诸如beforeAll(async () => { browser = await puppeteer.launch( { headless: false, slowMo: 250, } ) page = await browser.newPage() await page.goto('http://localhost:3000/'); }) describe('on page load', () => { test('MessageLists loads', async () => { await page.waitForSelector('.MessageList', { timeout: 3000 }) await page.waitForSelector('.messageOuterContainer', { timeout: 10000 }) }, 16000 ); test('Post Question', async () => { await page.waitForSelector('.messageOuterContainer', { timeout: 10000 }) await page.focus('.input'); await page.keyboard.type('test'); await page.$('.AnswerList'); await page.screenshot({ path: 'screenshot1.png' }); }, 20000) }) afterAll(() => { // browser.close() }) 之类的nunit项目的版本号并执行<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1"/>有助于解决此问题。

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