Добавление привязкиRedirect к библиотеке.Net Standard

У меня есть библиотека.Net Standard, и я получаю сообщение об ошибке при попытке использовать одну из зависимых библиотек, которая, по моему мнению, сводится к конфликту версии. В старой библиотеке классов.Net Class я мог бы добавить что-то вроде этого:

<?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; поэтому, на мой вопрос, какова стратегия решения таких проблем в стандарте.Net Standard?

Ответ 1

Переадресация привязок - это концепция платформы .NET, перенаправления привязки в .NET Standard и .NET Core отсутствуют.

Однако приложение (реальное приложение .NET Framework или .NET Core) должно разрешать используемые файлы. В .NET Core это делается путем создания файла deps.json на основе входных данных для сборки, а приложение .NET Framework использует перенаправления привязки.

Если требуется перенаправление привязки, их необходимо добавить в приложение (или библиотеку).NET Framework, которое использовало стандартную библиотеку .NET.

Эти перенаправления привязки можно настроить так, чтобы они автоматически генерировались во время сборки на основе сборок, использованных во время компиляции, см. документацию об автоматических перенаправлениях привязки. При использовании NuGet нового стиля PackageReference использования пакетов NuGet это делается автоматически. Поскольку правильная настройка зависит от типа проекта, см. объявление Проблемы с .NET Standard 2.0 с .NET Framework & NuGet для подробных описаний.

Самый простой способ убедиться, что используются правильные перенаправления привязки, - убедиться, что приложение или библиотека .NET Framework задает эти свойства (внутри csproj/vbproj. Второе не требуется для проектов, генерирующих исполняемые файлы .exe, но необходимо для модуля тестовые проекты):

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