Я пытаюсь создать exe со встроенными ресурсами. Все работает нормально, но если DevExpress.Utils.dll находится не в той же папке, что и .exe, приложение вылетает! Хотя все dll-файлы включены как встроенные ресурсы, и я ссылаюсь на них. Странно то, что это только DevExpress.Utils.dll. Dll, которые не найдены, я загружаю следующим образом:
[STAThread]
static void Main()
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyForm());
}
private static Assembly CurrentDomainOnAssemblyResolve(object sender, ResolveEventArgs args)
{
// the ddls are in a lib folder.
String resourceName = "MyApplication." + "lib." + new AssemblyName(args.Name).Name + ".dll";
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
if (stream != null)
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
}
return null;
}