1.Поставьте в свойствах вашей библиотеки - "внедренный ресурс".
2.Затем подпишитесь на событие , например в конструкторе формы:
2.Затем подпишитесь на событие , например в конструкторе формы:
//using System.Reflection;
//using System.IO;
public Form1()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
InitializeComponent();
}
В процессе выполнение, когда вашему коду понадобится сборка и он нигде не сможет ее найти, как раз сработает событие AssemblyResolve и нужно реализовать обработчик, т.е. что делать надо в таком случае, а делать надо вот что: извлечь сборку из ресурсов проекта и "предоставить" коду. Все!private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
//получаем имя сборки(короткое, без расширений)
string shortName = new AssemblyName(args.Name).Name;
//получаем ресурс из сборки по его имени, тут же помещая в созданный поток
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(shortName + ".dll"))
{
//Считываем ресурс в массив байтов
byte[] data = new BinaryReader(stream).ReadBytes((int)stream.Length);
//Загружаем сборку из массива байтов в текущий домен приложения и возвращаем её
return Assembly.Load(data);
}
}



смотри здесь http://home-user.ru там для VB.NET но можно переделать и на C#
ОтветитьУдалить