C# Do tnet Core 3.1 - Загрузка сборки во время выполнения - PullRequest
0 голосов
/ 04 марта 2020

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

Я использую AssemblyLoadContext.Default.LoadFromAssemblyPath(path). Затем с помощью DependencyContext и CompositeCompilationAssemblyResolver я загружаю неразрешенные зависимости, используя - Compile || Время выполнения - свойства. Наконец, я возвращаюсь к загрузке их непосредственно из пути к каталогу, если они еще не найдены.

Однако в некоторых проектах по-прежнему отсутствуют зависимости. Как и следующий

"Не удается найти файл справочной сборки Microsoft.AspNetCore. Mvc .Core.dll" для пакета Microsoft.AspNetCore. Mvc .Core "

Даже если он найден в библиотеках Compile или Runtime, TryResolveAssemblyPaths не может их найти: /

Спасибо за вашу помощь.

РЕДАКТИРОВАТЬ:

Что ж, после некоторых исследований выяснилось, что после версии 3.1 базового каркаса do tnet некоторые зависимости загружаются непосредственно в сам SDK. Предотвращение загрузки их вручную через ICompilationAssemblyResolver или др.

Так что, если вы столкнулись с такой проблемой в определенных проектах, примените тот же SDK к вызывающей / вызываемой (или импортируйте их). Microsoft. NET .Sdk.Web , например.

Do c: https://docs.microsoft.com/fr-fr/dotnet/core/project-sdk/overview

И: https://github.com/dotnet/cli/blob/master/Documentation/specs/runtime-configuration-file.md

РЕДАКТИРОВАТЬ 2:

Предлагаю вам прочитать эту проблему на github: https://github.com/dotnet/runtime/issues/1050

Г-н Витек Карас ответит на эту проблему более точно.

1 Ответ

2 голосов
/ 04 марта 2020

Я понимаю, что вы не можете загрузить сборку с пути

, поэтому сначала получите путь

 string path = HttpContext.Current.Server.MapPath("~/bin/dllname.dll");

, а затем

 load =AssemblyLoadContext.Default.LoadFromAssemblyPath(path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...