AssemblyResolve
никогда не сработает, потому что вы загружаете все сборки с помощью метода LoadApplication
- AssemblyResolve
будет вызываться только в том случае, если требуемая ссылка на сборку не может быть разрешена.
Я бы предложил запустить fuslogvw.exe , чтобы вы могли визуализировать происходящее.
Если вы хотите загружать сборки по мере необходимости, блок кода:
List<byte[]> deCompressBinaries = new List<byte[]>();
foreach (var item in AppPackage.Item.AssemblyPackage)
deCompressBinaries.Add(item.Buffer);
var decompressvalues = DeCompress(deCompressBinaries);
deCompressBinaries.Clear();
deCompressBinaries = decompressvalues.ToList();
foreach (byte[] binary in deCompressBinaries)
ApplicationHost.Load(binary);
Assembly[] assAfter = AppDomain.CurrentDomain.GetAssemblies();
нужно будет включить в AssemblyResolve
. Блок в настоящее время загружает ВСЕ в AppDomain, поэтому вам придется переделать этот кусок логики.
Конечно, другое, что вы можете сделать, это не изобретать велосипед, а использовать ILMerge .