programing

Microsoft로 인해 버전 충돌이 발생했습니다.NET.Sdk.기능들

batch 2023. 5. 1. 20:41
반응형

Microsoft로 인해 버전 충돌이 발생했습니다.NET.Sdk.기능들

Newtonsoft를 참조하는 두 개의 패키지를 참조하는 프로젝트에 문제가 있습니다.Json이지만 둘 다 버전이 다릅니다.나는 너겟 패키지를 사용하고 있습니다.Refit그리고.Microsoft.NET.Sdk.Functions솔루션을 구축하려고 하면 다음 오류가 발생합니다.

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에는 마법이 일어나지 않습니다.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.2" />
    <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
    <PackageReference Include="refit" Version="4.0.1" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Configuration" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="proxies.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

이 문제를 해결할 방법에 대해 아는 사람이 있습니까?

최신 업데이트

2019년 7월에 잠금이 제거되고 버전이 11.0.2로 업그레이드되었습니다.12로 업그레이드해도 일부 배포 문제가 발생할 수 있음


안타깝게도 이는 Azure Functions MSBuild 프로젝트의 알려진 버그입니다.모든 릴리스 버전은 Json에 대한 하드 코딩된 종속성을 가집니다.NET 9.0.1.보고되는 유일한 해결 방법은 다음으로 다운그레이드하는 것입니다.1.0.0-alpha6판본

패키지 요약과 설명이 부족하고 Github 프로젝트의 문서가 부족하다는 것은 이것이 진행 중인 작업이라는 분명한 신호입니다.

필요하다고 가정하면 레포 복제를 시도하고 종속성을 변경할 수 있습니다..csproj패키지를 다시 빌드합니다.

그 사이에 여러분도 영향을 받고 있다는 것을 설명하는 의견을 문제에 추가해야 할 것입니다.

이 문제를 해결하려면 csproj의 39행이 다음과 같이 변경되어야 합니다.

<PackageReference Include="Newtonsoft.Json" Version="[9.0.1]" />

로.

<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />

버전에 대한 다른 정확한 과 같습니다.Microsoft.Azure.WebJobs

2018년 11월 업데이트

레포의 Readme는 2018년 3월 31일 Json의 이유를 설명하는 FAQ와 함께 업데이트되었습니다.NET 버전이 잠겨 있으며 이를 처리하는 방법:

Q: 다른 뉴턴소프트가 필요합니다.Json 버전.내가 어떻게 해야 하나요?

A: 필요한 버전을 csproj에 추가합니다.예를 들어 11.0.2를 사용하려면 csproj에 추가합니다.

<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />

질문: 뉴턴은 왜 부드럽습니까?Json이 애초에 갇혔나요?

A: 뉴턴소프트의 스타일입니다.함수 런타임에 사용되는 버전과 일치하도록 Json이 잠겨 있습니다.

버전의 잠금을 해제하면 문제가 배포될 때까지 지연될 뿐이라는 설명이 포함된 (현재 잠겨 있는) 문제에 대한 긴 토론이 있습니다.

2019년 9월 업데이트

그 슨 가족.NET 버전은 더 이상 잠겨 있지 않으며 참조되는 버전은 11.0.2입니다.PR은 2019년 7월에 합병되었습니다.그러나 코멘트에서 알 수 있듯이, 이것은 단순히 컴파일 시간 제한을 제거합니다.하지만 여전히 배포 문제가 발생할 수 있습니다. 를 들어, 와 같은 문제가 있습니다.

저는 Netwonsoft와 함께 프로젝트를 진행할 수 있었습니다.Json 11.0.2는 .net core를 사용하여 Azure Functions의 v2로 전환합니다.

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>

Azure에서 함수 런타임은 뉴턴 소프트의 특정 버전(현재 함수 v2에서 11.0.1, 함수 v1에서 9.0.1)을 로드합니다.큐 바인딩에 의해 함수 라이브러리가 로드되기 전의 Json입니다.

컴파일에 적용된 해결 방법은 [11.0.1](예: v12에 사용된 새 특성)과 이진 호환되지 않는 함수를 사용하는 경우 런타임 오류를 진단하는 데 심각한 문제를 일으킬 수 있습니다.

관련 문제가 발생하여 Microsoft를 설치할 수 없습니다.NET.Sdk 패키지.vs 2017을 사용하여 새로운 Cloud - Azure 함수 프로젝트를 생성하여 이 문제를 해결했습니다.그 프로젝트는 마이크로소프트와 함께 제공됩니다.NET.Sdk 패키지 버전 1.0.6.이를 1.0.7로 업데이트하면 실제로 작동합니다.그런 다음 Newton 9.0.1을 설치합니다.그 이후로는 문제 없습니다.

언급URL : https://stackoverflow.com/questions/46073765/version-conflict-caused-by-microsoft-net-sdk-functions

반응형