Использовать кастомную версию сборки для всех зависимостей - PullRequest
1 голос
/ 13 июля 2020

В моем проекте используется измененная версия библиотеки Newtonsoft. Json с некоторыми изменениями, так что она хорошо работает с AOT. Модифицированная dll добавлена ​​как эталонная сборка проекта. В моем проекте также используется набор дополнительных библиотек (некоторые через Nuget, некоторые через дополнительный проект), и некоторые из этих библиотек также имеют свою собственную зависимость от Newtonsoft. Json.

  1. Какая версия Newtonsoft. Json будет включен в окончательную сборку?
  2. Могу ли я сопоставить все версии для использования измененной библиотеки? Может быть, через BindingRedirect?

1 Ответ

1 голос
/ 24 июля 2020

Должна быть возможность заставить внешние библиотеки загружать вашу dll, используя AppDomain.CurrentDomain.AssemblyResolve это в вашем проекте

В событии post build добавьте командную строку для удаления Newtonsoft. Json .dll из целевого каталога в качестве первой строки кода вашего проекта (внутри Program. cs в случае windows приложений и внутри Global.asax Application_Start в случае веб-приложений) добавьте этот код:
AppDomain.CurrentDomain.AssemblyResolve += 
    (s, a) => {
        if (a.Name.Contains("Newtonsoft.Json"))
          return Assembly.LoadFrom(@"PATH TO YOUR DLL HERE");
        else
          return null;
              };

В случае веб-приложения вы можете получить путь к вашей dll с помощью Server.MapPath

...