można użyć zdarzenia AppDomain.AssemblyResolve dodać niestandardowy montażowe przeliczniki. Dzięki temu możesz wskazać inne katalogi lub nawet bazy danych, aby uzyskać assemblie w razie potrzeby.
Użyłem nawet podobnego kodu do pobrania złożeń z bazy danych i zapisania w IsolatedStorage. Nazwa pliku jako skrót nazwy pełnego zestawu. Następnie baza danych musiałaby zostać pobrana tylko przy pierwszym rozwiązaniu, a wszystkie przyszłe rozwiązania będą obsługiwane przez system plików. Najlepiej o zdarzeniu AssemblyResolve można użyć Type.GetType() i wbudowanych Serializers.
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;
}
Jak wspomniano [tutaj] (http://www.codeproject.com/Articles/310675/AppDomain-AssemblyResolve-Event- Wskazówki), użyj 'string assemblyname = new AssemblyName (args.Name) .Name;' zamiast używać 'Split (',')'. – kroimon
Dzięki za sugestię. –