1

.Net 표준 라이브러리가 있는데 버전 충돌이 있다고 생각되는 종속 라이브러리 중 하나를 사용하려고 할 때 오류가 발생합니다. 내가 분명히 인터넷 표준 라이브러리에 할 수 없어,.Net 표준 라이브러리에 bindingRedirect 추가

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

을하지만, : 이전 스타일 닷넷 클래스 라이브러리에서,이 같은 것을 추가 할 수 있습니다 그래서, 내 질문은, 닷넷 표준 세계에서 이러한 문제를 해결하기위한 전략은 무엇입니까?

답변

0

바인딩 리디렉션은 .NET Framework 개념이므로 .NET Standard 및 .NET Core에는 바인딩 리디렉션이 없습니다.

그러나 응용 프로그램 (실제 .NET Framework 또는 .NET Core 응용 프로그램)은 사용할 파일을 확인해야합니다. .NET 코어에서는 빌드 입력을 기반으로 deps.json 파일을 생성하고 .NET Framework 응용 프로그램은 바인딩 리디렉션을 사용하여이 작업을 수행합니다.

바인딩 리디렉션이 필요한 경우 .NET 표준 라이브러리를 사용하는 .NET Framework 응용 프로그램 (또는 라이브러리)에 추가해야합니다.

이러한 바인딩 리디렉션은 컴파일하는 동안 사용 된 어셈블리를 기반으로 빌드 중에 자동으로 생성됩니다 (documentation on automatic binding redirects 참조). NuGet의 새로운 PackageReference 스타일을 사용하면 NuGet 패키지가 자동으로 사용됩니다. 이 설정을 올바르게 구성하는 것은 프로젝트 유형에 따라 다르므로 자세한 설명은 발표 번호 Issues with .NET Standard 2.0 with .NET Framework & NuGet을 참조하십시오.

올바른 바인딩 리디렉션을 사용하는 가장 간단한 방법은 .NET Framework 응용 프로그램 또는 라이브러리가 csproj/vbproj 내부에서 이러한 속성을 설정하도록하는 것입니다. 두 번째 것은 .exe 실행 파일을 생성하는 프로젝트에 필요하지 않습니다. 단위 테스트 프로젝트에 필요) :

<PropertyGroup> 
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> 
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> 
</PropertyGroup>