Cargar dependencias nuget en tiempo de ejecución
Estoy buscando una forma de ejecutar código ejecutando los siguientes pasos:
Recibir una lista de paquetes NuGet (una lista de tuplas ("nombre del paquete", "versión del paquete", "ruta a la clase principal").Recuperándolos en un directorio local (cf código muestra # 1)Cargandolos en mi programa en tiempo de ejecuciónEjecutar las clases principales por introspección (cf código muestra # 2)Por ahora estoy luchando con el tercer paso. No puedo averiguar cómo cargar mi paquete en tiempo de ejecución.
Mi pregunta principal es:
¿Cómo puedo averiguar en qué carpetas se almacenaron los paquetes recuperados?¿Cómo puedo cargar el contenido de esos directorios en mi programa?Gracias por tu ayuda.
Muestra de código n. ° 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));
}
Muestra de código n. ° 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[] { });
}