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[] { });
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta