Я ищу способ запустить код, выполнив следующие шаги:
- Получение списка пакетов NuGet (список кортежей ( "имя пакета", "версия пакета", "путь к основному классу" ).
- Получение их в локальном каталоге (пример кода cf # 1)
- Загрузка их в мою программу во время выполнения
- Выполнение основных классов путем интроспекции (пример кода 2)
К настоящему времени я борюсь с третьим шагом. Я не могу узнать, как загрузить мой пакет во время выполнения.
Мой главный вопрос:
- Как узнать, в каких папках были сохранены извлеченные пакеты?
- Как загрузить содержимое этих каталогов в мою программу?
Спасибо за вашу помощь.
Пример кода №1:
private static void getPackageByNameAndVersion(string packageID, string version)
{
IPackageRepository repo =
PackageRepositoryFactory.Default
.CreateRepository("https://packages.nuget.org/api/v2");
string path = "C:/tmp_repo";
PackageManager packageManager = new PackageManager(repo, path);
Console.WriteLine("before dl pkg");
packageManager.InstallPackage(packageID, SemanticVersion.Parse(version));
}
Пример кода # 2:
private static void loadByAssemblyNameAndTypeName(string assemblyName, string typeName)
{
AppDomain isolationAppDomain = AppDomain.CreateDomain("tmp");
object a = isolationAppDomain.CreateInstanceAndUnwrap(assemblyName, typeName);
Type x = a.GetType();
MethodInfo m = x.GetMethod("Main");
m.Invoke(a, new object[] { });
}