Загрузите AppConfig с перенаправлением привязки из ресурса - PullRequest
0 голосов
/ 04 мая 2020

У меня есть приложение. NET Framework 4.6.2 myApp.exe с несколькими внутренними и внешними зависимостями. Все зависимости включены в основное приложение myApp.exe как ресурсы.

При запуске приложения наш пользовательский загрузчик сборок получает уведомление через событие AssemblyResolve и загружает запрошенную сборку из * 1008. * ресурсы через GetManifestResourceStream() и Assembly.Load().

Работает нормально, кроме App.config: ресурсы содержат myApp.App.config, но пользовательский Сборочный загрузчик пока не загружается. Это приводит к проблеме, поскольку все перенаправления привязки сборки, указанные в App.config, не применяются. NET Runtime. При размещении myApp.exe.config рядом с myApp.exe (как обычно в. NET) все работает нормально.

Я пытаюсь найти способ избежать дополнительного файла myApp.exe.config. Вместо этого я хочу загрузить конфигурацию приложения (особенно перенаправления привязки) из ресурсов. Это вообще возможно? Если да, как я могу это сделать?

1 Ответ

0 голосов
/ 04 мая 2020

К сожалению, вы не можете указать CLR, какой файл вы хотите загрузить в качестве конфигурации времени выполнения. Среда выполнения ищет конфигурацию xml в следующем порядке:

  1. конфигурация приложения
  2. конфигурация машины

Поиск выполняется каждый раз, когда CLR требуется информация из конфигурации, например, связывание перенаправлений и местоположений сборки при загрузке сборки.

В основном это часть процесса загрузки сборки, и лучше оставить ее как есть. Вы можете прочитать больше об этом здесь: https://docs.microsoft.com/en-us/dotnet/framework/deployment/how-the-runtime-locates-assemblies

Редактировать: Тем не менее, вы можете жить без файла конфигурации. Вы сказали, что у вас есть все ваши сборки, встроенные в сборку exe, и вы загружаете все через собственный распознаватель. Обратите внимание, что пользовательский распознаватель сборок вызывается только тогда, когда конвейер стандартного разрешения не может загрузить сборку. Посмотрите на этот ответ: { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...