Можно ли добавить новую зависимость в .dll без изменения исходного кода? - PullRequest
0 голосов
/ 06 октября 2019

У меня есть два проекта dotnetcore2.1. Первый проект вызывает метод второго проекта через рефлексию.

using System;
using System.Reflection;

namespace experiment1
{
    class Program
    {
        static void Main(string[] args)
        {
            Type _type = Type.GetType("experiment2.Program");
            object _object = Activator.CreateInstance(_type);
            MethodInfo info = _type.GetMethod("SecondProjectsMethod");
            info.Invoke(_object, new object[]{});
        }
    }
}

Я не могу ни дать ссылки на Второй проект, ни изменить его код. Как я могу сделать этот вызов успешно, не добавляя ссылку на первый проект? Я попытался добавить записи в файл первого проекта и выполнить первую программу следующим образом:

dotnet exec --depsfile experiment1.deps.json experiment1.dll

Это не сработало. Возможно ли это сделать, изменив deps-file или любой другой конфиг? Или я должен каким-то образом манипулировать файлом .dll ? В каком направлении мне идти?

1 Ответ

0 голосов
/ 06 октября 2019

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

Assembly.Load("experiment2");

Она должна найти сборку в текущей папке или использовать файл deps, чтобы найти ее. После этого вы сможете просто использовать Type.GetType.

Если вы хотите указать полный путь к сборке, используйте AssemblyLoadContext.Default.LoadFromAssemblyPath.

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

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