Приложению ClickOnce не удалось загрузить библиотеку, загруженную во время выполнения - PullRequest
0 голосов
/ 05 мая 2020

Приложение WPF,. NET Framework: 4.5.2., IO C контейнер: Unity

В моем приложении есть библиотека третьей части, у которой есть некоторые зависимости, которые я хочу загрузить во время выполнения, и я считаю, что после перезапуска приложения все должно работать правильно.

Все работает правильно, используя двоичные файлы из каталога сборки, но в развернутом приложении ClickOnce происходит сбой при загрузке представления, которое зависит от библиотеки после перезапуска.

Подробности:

  1. При запуске приложения каждая библиотека преобразуется в bootstrap.

  2. Следующий код отвечает за загрузку типов во время первый шаг (предотвращает невозможность загрузки сторонней библиотеки)

    public static IEnumerable<Type> GetLoadableTypes(this Assembly assembly)
    {
        try
        {
            return assembly.GetTypes();
        }
        catch (ReflectionTypeLoadException e)
        {
            return e.Types.Where(t => t != null);
        }
    }
    
  3. Я использую для проверки необходимости загрузки зависимостей третьей части:

        try
        {
            Assembly.Load("3rdPartAssembly");
    
            return true;
        }
        catch (FileNotFoundException)
        {
            return false;
        }
    

3 Если возвращается true, пользователь может просматривать окно, использующее стороннюю библиотеку.

...