1

私は.Net標準ライブラリを持っていますが、依存するライブラリの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> 

をしかし、私は明らかにネット標準ライブラリでそれを行うことはできません。ですから、私の質問は、.Net Standardの世界でこのような問題に取り組むための戦略は何ですか?

答えて

0

バインディングリダイレクトは.NETフレームワークの概念であり、.NET標準および.NETコアにバインディングリダイレクトはありません。

ただし、アプリケーション(実際の.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内でこれらのプロパティを設定することです(2番目は.exe実行可能ファイルを生成するプロジェクトには不要です)ユニットテストプロジェクトに必要です):

<PropertyGroup> 
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> 
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> 
</PropertyGroup> 
関連する問題