由Microsoft.NET.Sdk.Functions引起的版本冲突

我有一个项目引用2个软件包的问题,​​然后引用Newtonsoft.Json,但两个版本都不同。 我正在使用Refit和Microsoft.NET.Sdk.Functions的nuget包。 当我尝试构建解决方案时,我收到以下错误:

 C:\dev\noddy\noddy-api\src\noddy.Api>dotnet build C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj : error NU1607: Version conflict detected for Newtonsoft.Json. Reference the package directly from the project to resolve this issue. \r C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj : error NU1607: noddy.Api (>= 1.0.0) -> Refit (>= 4.0.1) -> Newtonsoft.Json (>= 10.0.3) \r C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj : error NU1607: noddy.Api (>= 1.0.0) -> Microsoft.NET.Sdk.Functions (>= 1.0.2) -> Newtonsoft.Json (>= 9.0.1). 

现在,如果我按照它说的做,直接从我的项目引用包,我在构建时会遇到另一个错误:

 C:\dev\noddy\noddy-api\src\noddy.Api>dotnet add package Newtonsoft.Json Writing C:\Users\joebloggs\AppData\Local\Temp\tmp7250.tmp info : Adding PackageReference for package 'Newtonsoft.Json' into project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. log : Restoring packages for C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj... info : CACHE http://www.myget.org/F/azure-appservice/api/v2/FindPackagesById()?id='Newtonsoft.Json' info : CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Newtonsoft.Json' info : Package 'Newtonsoft.Json' is compatible with all the specified frameworks in project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. info : PackageReference for package 'Newtonsoft.Json' version '10.0.3' added to file 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. C:\dev\noddy\noddy-api\src\noddy.Api>dotnet build Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. noddy.Api -> C:\dev\noddy\noddy-api\src\noddy.Api\bin\Debug\net461\bin\noddy.Api.dll C:\Users\joebloggs\.nuget\packages\microsoft.net.sdk.functions\1.0.2\build\netstandard1.0\Microsoft.NET.Sdk.Functions.Build.targets(31,5): error : Could not load file or assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. The system cannot find the file specified. [C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj] Build FAILED. C:\Users\joebloggs\.nuget\packages\microsoft.net.sdk.functions\1.0.2\build\netstandard1.0\Microsoft.NET.Sdk.Functions.Build.targets(31,5): error : Could not load file or assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. The system cannot find the file specified. [C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj] 0 Warning(s) 1 Error(s) Time Elapsed 00:00:03.05 C:\dev\noddy\noddy-api\src\noddy.Api> 

我试图添加程序集重定向,但似乎忽略了它们。

我也试图删除所有的包,然后一个接一个地添加它们,但仍然没有乐趣:

 C:\dev\noddy\noddy-api\src\noddy.Api>dotnet remove package refit info : Removing PackageReference for package 'refit' from project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. C:\dev\noddy\noddy-api\src\noddy.Api>dotnet remove package Microsoft.NET.Sdk.Functions info : Removing PackageReference for package 'Microsoft.NET.Sdk.Functions' from project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. C:\dev\noddy\noddy-api\src\noddy.Api>dotnet remove package Newtonsoft.Json info : Removing PackageReference for package 'Newtonsoft.Json' from project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. C:\dev\noddy\noddy-api\src\noddy.Api>dotnet add package Microsoft.NET.Sdk.Functions Writing C:\Users\joebloggs\AppData\Local\Temp\tmp1F1B.tmp info : Adding PackageReference for package 'Microsoft.NET.Sdk.Functions' into project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. log : Restoring packages for C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj... info : CACHE http://www.myget.org/F/azure-appservice/api/v2/FindPackagesById()?id='Microsoft.NET.Sdk.Functions' info : CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.NET.Sdk.Functions' info : Package 'Microsoft.NET.Sdk.Functions' is compatible with all the specified frameworks in project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. info : PackageReference for package 'Microsoft.NET.Sdk.Functions' version '1.0.2' added to file 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. C:\dev\noddy\noddy-api\src\noddy.Api>dotnet add package refit Writing C:\Users\joebloggs\AppData\Local\Temp\tmp39D7.tmp info : Adding PackageReference for package 'refit' into project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. log : Restoring packages for C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj... info : CACHE http://www.myget.org/F/azure-appservice/api/v2/FindPackagesById()?id='refit' info : CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='refit' error: Version conflict detected for Newtonsoft.Json. Reference the package directly from the project to resolve this issue. error: noddy.Api (>= 1.0.0) -> Refit (>= 4.0.1) -> Newtonsoft.Json (>= 10.0.3) error: noddy.Api (>= 1.0.0) -> Microsoft.NET.Sdk.Functions (>= 1.0.2) -> Newtonsoft.Json (>= 9.0.1). info : Package 'refit' is compatible with all the specified frameworks in project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. info : PackageReference for package 'refit' version '4.0.1' added to file 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. C:\dev\noddy\noddy-api\src\noddy.Api>dotnet build C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj : error NU1607: Version conflict detected for Newtonsoft.Json. Reference the package directly from the project to resolve this issue. \r C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj : error NU1607: noddy.Api (>= 1.0.0) -> Refit (>= 4.0.1) -> Newtonsoft.Json (>= 10.0.3) \r C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj : error NU1607: noddy.Api (>= 1.0.0) -> Microsoft.NET.Sdk.Functions (>= 1.0.2) -> Newtonsoft.Json (>= 9.0.1). C:\dev\noddy\noddy-api\src\noddy.Api>dotnet add package Newtonsoft.Json Writing C:\Users\joebloggs\AppData\Local\Temp\tmp8B13.tmp info : Adding PackageReference for package 'Newtonsoft.Json' into project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. log : Restoring packages for C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj... info : CACHE http://www.myget.org/F/azure-appservice/api/v2/FindPackagesById()?id='Newtonsoft.Json' info : CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Newtonsoft.Json' info : Package 'Newtonsoft.Json' is compatible with all the specified frameworks in project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. info : PackageReference for package 'Newtonsoft.Json' version '10.0.3' added to file 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'. C:\dev\noddy\noddy-api\src\noddy.Api>dotnet build Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. noddy.Api -> C:\dev\noddy\noddy-api\src\noddy.Api\bin\Debug\net461\bin\noddy.Api.dll C:\Users\joebloggs\.nuget\packages\microsoft.net.sdk.functions\1.0.2\build\netstandard1.0\Microsoft.NET.Sdk.Functions.Build.targets(31,5): error : Could not load file or assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. The system cannot find the file specified. [C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj] Build FAILED. C:\Users\joebloggs\.nuget\packages\microsoft.net.sdk.functions\1.0.2\build\netstandard1.0\Microsoft.NET.Sdk.Functions.Build.targets(31,5): error : Could not load file or assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. The system cannot find the file specified. [C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj] 0 Warning(s) 1 Error(s) Time Elapsed 00:00:03.05 C:\dev\noddy\noddy-api\src\noddy.Api> 

在我的csproj中也没有任何魔法消失:

   net461             PreserveNewest   PreserveNewest   PreserveNewest    

谁有任何想法如何解决这个问题?

不幸的是,这是Azure Functions MSBuild项目的已知错误 。 所有发行版本都对Json.NET 9.0.1具有硬编码依赖性。 报告的唯一解决方法是降级到1.0.0-alpha6版本。

缺少软件包摘要和描述,以及Github项目中缺少文档,这清楚地表明这是一项正在进行的工作。

假设您确实需要它,您可以尝试克隆repo, 更改 .csproj 的依赖项并重建包。

在此期间,您可能应该对该问题添加评论,并解释您也受到影响。

要解决这个问题, csproj的第39行应该改为:

  

  

还有其他确切的版本依赖于Microsoft.Azure.WebJobs包的beta版本

遇到相关问题,无法安装Mirosoft.NET.Sdk包。 通过使用vs2017创建新的Cloud-Azurefunction项目来解决这个问题。 该项目附带Mirosoft.NET.Sdk软件包版本1.0.6。 将其更新到1.0.7实际上有效。 然后安装牛顿9.0.1。 从那以后,没有问题。