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
'programing' 카테고리의 다른 글
PG::연결 불량 - 서버에 연결할 수 없음: 연결이 거부됨 (0) | 2023.05.01 |
---|---|
GitHub 오류 메시지 - 권한 거부됨(공개 키) (0) | 2023.05.01 |
현재 메소드를 호출한 메소드를 어떻게 찾을 수 있습니까? (0) | 2023.05.01 |
MongoDB - 컬렉션의 모든 레코드를 업데이트하는 가장 빠른 방법은 무엇입니까? (0) | 2023.05.01 |
WPF의 이미지 컨트롤을 사용하여 시스템을 표시합니다.그림그리기.비트맵 (0) | 2023.05.01 |