用asp.net core 2.2恢复nuget包的问题

时间:2018-12-14 14:11:57

标签: c# asp.net-core nuget

我成功地将项目更新为netcoreapp2.2。我可以还原nuget程序包并构建项目,而不会出现任何问题。我使用CD / CI,并且在构建服务器上,还原nuget时收到错误消息。这些来自日志:

  

2018-12-14T12:35:33.4556576Z ## [错误] nuget命令失败,出现退出代码(1)和错误(NU1607:为Microsoft.AspNetCore.Authentication.Abstractions检测到版本冲突。直接从该包引用该包解决该问题的项目。    PM.Service.API(> = 1.0.0)-> Microsoft.AspNetCore.Mvc.Formatters.Xml(> = 2.2.0)-> Microsoft.AspNetCore.Mvc.Core(> = 2.2.0)-> Microsoft。 AspNetCore.Authorization.Policy(> = 2.2.0)-> Microsoft.AspNetCore.Authentication.Abstractions(> = 2.2.0)    PM.Service.API(> = 1.0.0)-> Microsoft.AspNetCore.App(> = 2.1.0)-> Microsoft.AspNetCore.Authentication.Abstractions(> = 2.1.0)。   NU1607:为Microsoft.AspNetCore.Hosting检测到版本冲突。直接从项目中引用该软件包即可解决此问题。    TM.Service.API(> = 1.0.0)-> Microsoft.AspNetCore.Hosting.WindowsServices(> = 2.2.0)-> Microsoft.AspNetCore.Hosting(> = 2.2.0)    TM.Service.API(> = 1.0.0)-> Microsoft.AspNetCore.App(> = 2.1.0)-> Microsoft.AspNetCore.Hosting(> = 2.1.0)。

在我的项目中,我有以下软件包参考:

                 

如何解决此问题? 谢谢

7 个答案:

答案 0 :(得分:4)

谢谢您的回答。我发现了问题。我的CD进程中有一个任务“ NuGet工具安装程序”。我将nuget.exe的版本从4.3.0更新到4.8.1,现在可以使用了。 谢谢

答案 1 :(得分:1)

该错误是指您已安装的多个软件包都依赖于这些软件包:

  • Microsoft.AspNetCore.Authentication.Abstractions
  • Microsoft.AspNetCore.Hosting

但是不同的软件包依赖于不同的版本。注意要求的不同版本号:“(> = 1.0.0)”,“(> = 2.1.0)”,“(> = 2.2.0)”。

确实,版本2.2.0可以满足所有这些条件,但是仍然很困惑,因此它不知道要安装哪个版本。

解决方案是“直接从项目中引用程序包”,换句话说,显式安装这两个程序包。

答案 2 :(得分:0)

PM.Service.API引用了Microsoft.AspNetCore.App,它是2.1.x版

您还需要升级您的类库

答案 3 :(得分:0)

我有一个与Dim_Ka类似的问题。我正在使用Nuget v4.3。我尝试在执行nuget还原时禁用缓存,但那没有用。我已更新到Nuget v4.8.1,并且nuget restore成功运行。

之后,我回到Nuget 4.3只是为了确认4.3是引起该问题的原因,并且它再次开始失败。然后将其更改回4.8.1,然后再次开始工作。

这是我收到的错误:

  

nuget命令失败,并显示退出代码(1)和错误(NU1607:为Microsoft.AspNetCore.Authentication.Core检测到版本冲突。直接从项目中引用该软件包即可解决此问题。    ThisApp.API(> = 1.0.0)-> Microsoft.AspNetCore.Mvc.Versioning(> = 3.1.1)-> Microsoft.AspNetCore.Mvc.Core(> = 2.2.0)-> Microsoft.AspNetCore.Authentication核心(> = 2.2.0)    ThisApp.API(> = 1.0.0)-> Microsoft.AspNetCore.App(> = 2.1.0)-> Microsoft.AspNetCore.Authentication.Core(> = 2.1.0)   D:\ a \ 1 \ s \ ThisApp.API \ ThisApp.API.csproj中的错误       NU1607:检测到Microsoft.AspNetCore.Authentication.Core的版本冲突。直接从项目中引用该软件包即可解决此问题。        ThisApp.API(> = 1.0.0)-> Microsoft.AspNetCore.Mvc.Versioning(> = 3.1.1)-> Microsoft.AspNetCore.Mvc.Core(> = 2.2.0)-> Microsoft.AspNetCore.Authentication核心(> = 2.2.0)        ThisApp.API(> = 1.0.0)-> Microsoft.AspNetCore.App(> = 2.1.0)-> Microsoft.AspNetCore.Authentication.Core(> = 2.1.0)。)   软件包还原失败

我认为这与您不应该为Microsoft.Aspnetcore.App软件包指定版本有关。 Nuget 4.3可能无法正确处理此问题: https://docs.microsoft.com/en-us/aspnet/core/migration/21-to-22?view=aspnetcore-2.2&tabs=visual-studio#update-package-references

答案 4 :(得分:0)

我在本地安装了ASPNetCore 2.2,在项目道具中将其重定向到2.2,删除了nuget PM中现有的2.1引用,然后通过nuget安装了Microsoft.Aspnetcore(2.2)。固定。

答案 5 :(得分:0)

我有同样的问题。 在本地,该项目可以很好地还原Nuget程序包,但是,一旦我开始使用Azure Pipelines,我就会收到版本冲突错误。

我最终在yaml文件中对此进行了更改:

- task: NuGetToolInstaller@0
  inputs:
    versionSpec: '4.8.1' <-- Define the Nuget version here

之后,在我的管道中恢复Nuget软件包的步骤就很好了。

答案 6 :(得分:0)

更新配置: 将nuget.exe的版本从4.3.0更新到4.8.1,现在可以使用。看起来旧版本存在一些问题

如果yaml文件随后进行如下更新,

  • 任务:NuGetToolInstaller @ 0 输入: versionSpec:“ 4.8.1”