puede utilizar el evento AppDomain.AssemblyResolve añadir encargo Resolvers Asamblea. Esto le permite apuntar a otros directorios o incluso bases de datos para obtener conjuntos según sea necesario.
Incluso he usado un código similar para descargar ensamblajes de una base de datos y almacenar en IsolatedStorage. El nombre del archivo como un hash del nombre completo del ensamblado. Entonces, la base de datos solo debería descargarse la primera vez que la resuelva y todas las resoluciones futuras serán atendidas por el sistema de archivos. Lo mejor sobre el evento AssemblyResolve es que puedes usarlo Type.GetType() y los Serializers integrados.
static string lookupPath = @"c:\otherbin";
static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve +=
new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
static Assembly CurrentDomain_AssemblyResolve(object sender,
ResolveEventArgs args)
{
var assemblyname = new AssemblyName(args.Name).Name;
var assemblyFileName = Path.Combine(lookupPath, assemblyname + ".dll");
var assembly = Assembly.LoadFrom(assemblyFileName);
return assembly;
}
Como se mencionó [aquí] (http://www.codeproject.com/Articles/310675/AppDomain-AssemblyResolve-Event- Sugerencias), use 'string assemblyname = new AssemblyName (args.Name) .Name;' en lugar de usar 'Split (',')'. – kroimon
Gracias por la sugerencia. –