Jeden miły podejście Użyłem ostatnio jest dodanie obsługi zdarzeń dla zdarzenia AppDomain za AssemblyResolve.
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
Następnie w metodzie obsługi zdarzenia można załadować zestawu, który próbowano rozwiązać za pomocą jednego z Assembly.Load, nadpisuje Assembly.LoadFrom i odesłać go z tej metody.
EDIT:
Na podstawie dodatkowych informacji myślę stosując technikę powyżej, a konkretnie rozwiązanie odniesień do zespołu siebie jest jedynym realnym podejściem, które będzie działać bez restrukturyzacji swoją aplikację. To co daje to to, że lokalizacja każdego zespołu, którego CLR nie potrafi rozwiązać, może zostać ustalona i załadowana przez twój kod w czasie wykonywania ... Używałem tego w podobnych sytuacjach zarówno dla architektur wtykowych, jak i dla integralności referencyjnej zespołu. narzędzie do skanowania.
Dobrym przykładem tej techniki jest aplikacja LINQPad. Jest dostarczany jako pojedynczy exe, więc wszystkie biblioteki są włączone jako zasoby osadzone. Zobacz http://www.albahari.com/nutshell/ch16.aspx dla kodu i http://www.linqpad.net/HowLINQPadWorks.aspx dla wglądu. – Pat