Почему Type.GetType () не работает в ASP.NET Core? - PullRequest
0 голосов
/ 06 марта 2019

Я портирую приложение Windows Forms, работающее в .NET Framework 4.7, на ASP.NET Core [sic].В приложении имеется механизм подключаемого модуля, в котором каждый подключаемый модуль регистрируется в файле конфигурации, который состоит из списка имен типов, соответствующих сборке:

TheApp.Assembly1.ExtensionClass1,TheApp.Assembly1
TheApp.Assembly2.ExtensionClass2,TheApp.Assembly2

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

    string asmQualifiedTypeName = LoadAsmQualifiedTypeNameFromConfigFile(moniker);
    Type pluginType = Type.GetType(asmQualifiedTypeName);
    if (pluginType == null) 
        throw new ApplicationException($"Unable to load plugin {moniker}.");
    // code continues

Загрузка плагина с помощью Type.GetType() работала в Windows Forms годами.

Когда я портирую приложение на ASP.NET Core, вызов Type.GetType() завершится неудачно.Я убедился, что сборка плагина находится рядом с сборкой приложения ASP.NET Core, но это сбивает с толку FileNotFoundException.

Почему Type.GetType() терпит неудачу здесь?Я использую неправильный механизм расширения здесь?Если да, то какой механизм расширения я должен использовать в ASP.NET Core, учитывая, что я хочу загружать плагины только по требованию, поскольку обычно будет использоваться только один из десятков возможных?

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