Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/96: Рейтинг темы: голосов - 96, средняя оценка - 4.63
2 / 2 / 0
Регистрация: 27.03.2012
Сообщений: 50
1
.NET 4.x

Как объединить exe и Dll в один файл

04.06.2012, 17:18. Показов 19526. Ответов 15

Author24 — интернет-сервис помощи студентам
Привет!

У меня есть файл:
Exe
DLL

Файл exe не запускается без DLL

Как можно соеденить эти 2 файла? Чтобы была токо exe(А Dll Внутри exe)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2012, 17:18
Ответы с готовыми решениями:

Как объединить exe и dll в один файл
Привет всем! Подскажите, пожалуйста, возможно ли в проект VB.NET (2008 - 2012) добавить...

Объединить EXE и DLL в один файл
Вопрос: как заставить кутэ при сборке инклудить *.lib в экзешник, к примеру ту же самую библиотеку...

Как множество dll собрать в один dll или exe файл?
Сделал тестовый проектик по работе с БД (Entity Framework), скомпилировал и как глянул в папку...

Как объеденить файлы dll с exe ? Чтобы в итоге был только один exe файл
У меня есть 15 dll и 1 exe.Как их объеденить вместе?Чтобы получился только один EXEшник

15
192 / 147 / 27
Регистрация: 02.05.2011
Сообщений: 467
04.06.2012, 17:52 2
Сделать исходный код dll частью исходного кода exe приложения.
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
04.06.2012, 20:39 3
DLL нативная или .net сборка?
Если нативная - то в ресурсы её и распаковывать при запуске.
Если сборка - можно объединить, с помощью ILMerge.
0
2 / 2 / 0
Регистрация: 27.03.2012
Сообщений: 50
15.06.2012, 12:02  [ТС] 4
А как сделать чтобы она распаковывалась при запуске? А при закрытие программы она удалялась

название dll - VAMemory.dll
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
15.06.2012, 12:37 5
Расскажите, как вы её испольлзуете. Через DLLImport или добавляете reference в Visual Studio?
0
2 / 2 / 0
Регистрация: 27.03.2012
Сообщений: 50
15.06.2012, 12:41  [ТС] 6
Эта DLL Находится у меня с Exe Тоесть просто рядом! И она встроенна в ссылки в Visual Studio

Добавлено через 22 секунды
Эта DLL Находится у меня с Exe Тоесть просто рядом! И она Подключена к проекту в Visual Studio
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
15.06.2012, 13:30 7
Значит у вас managed dll и её можно просто объединить, с помощью ILMerge.
Графическую оболочку для ILMerge можно взять в этом посте - Внедрение dll в компиляцию
0
49 / 49 / 5
Регистрация: 11.07.2011
Сообщений: 282
15.06.2012, 14:07 8
Поставьте в свойствах вашей библиотеки - "внедренный ресурс".
Затем подпишитесь на событие , например в конструкторе формы
C#
1
2
3
4
5
         public Form1()
        {
            AppDomain.CurrentDomain.AssemblyResolve += new    ResolveEventHandler(CurrentDomain_AssemblyResolve);
            InitializeComponent();
        }
В процессе выполнение, когда вашему коду понадобится сборка и он нигде не сможет ее найти, как раз сработает событие AssemblyResolve и нужно реализовать обработчик, т.е. что делать надо в таком случае, а делать надо вот что: извлечь сборку из ресурсов проекта и "предоставить" коду. Все!

Пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {           
            //получаем имя сборки(короткое, без расширений)
            string shortName = new AssemblyName(args.Name).Name;
 
            //получаем ресурс из сборки по его имени, тут же помещая в созданный поток 
            using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Test." + shortName + ".dll"))
            {
                //Считываем ресурс в массив байтов
                byte[] data = new BinaryReader(stream).ReadBytes((int)stream.Length);
 
                //Загружаем сборку из массива байтов в текущий домен приложения и возвращаем её
                return Assembly.Load(data);
            }
 
        }
Это если вы хотите сделать все сами, без сторонних программ.
Если это не так...То ищите ILMerge.
0
2 / 2 / 0
Регистрация: 27.03.2012
Сообщений: 50
15.06.2012, 14:51  [ТС] 9
А можно попонятнее))
0
49 / 49 / 5
Регистрация: 11.07.2011
Сообщений: 282
15.06.2012, 14:56 10
Что именно Вам непонятно?
0
turbanoff
15.06.2012, 15:03
  #11

Не по теме:

Непонятно зачем городить этот огород с ресурасами и динамической загрузкой библиотек, если можно просто взять и объединить IL код?

0
49 / 49 / 5
Регистрация: 11.07.2011
Сообщений: 282
15.06.2012, 16:01 12
Огород..ну получаем по крайней мере независимость. Разве это плохо? Не приходится после компиляции проделывать лишних операций, кол-во которых возрастает на +1 при использовании ILMerge. Тем более я четко вижу что делает мой код.
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
15.06.2012, 16:57 13
В том то и дело, что лучше делать лишние шаги во время компиляции, а не время выполнения.
Плюс, вы можете избавиться от ручного слияния, добавив вызов ILMerge в скрипт post-build в Visual Studio.
0
49 / 49 / 5
Регистрация: 11.07.2011
Сообщений: 282
15.06.2012, 17:44 14
Про последнее можно поподробнее?) слышал про такую возможность, но использовать не приходилось.
Как прописать такую зависимость?(добавив вызов ILMerge в скрипт post-build в Visual Studio.)

Динамическое разрешение сборки мне все таки ближе))
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
15.06.2012, 18:18 15
Вот статья на хабре - http://habrahabr.ru/post/126089/
1
2 / 2 / 0
Регистрация: 27.03.2012
Сообщений: 50
16.06.2012, 02:15  [ТС] 16
У меня не запускается файл ILMerge
1
16.06.2012, 02:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2012, 02:15
Помогаю со студенческими работами здесь

Объединить 2 dll файла и exe в один
В общем требуется упаковать 2 dll файла и exe файл в один, почитал уже кучу тем, везде советуют...

Упаковать exe и dll в один exe файл
Добрый день! Для защиты использую IlProtector. На выходе получается exe и 2 dll. Я хочу...

Запаковка dll и exe в один исполняемый файл
подскажите как с помощью C# можно упаковать главные файлы клиента игры в 1 exe. что бы было...

Объединить dll + exe
Здравствуйте! Подскажите каким образом можно объединить exe файл с библиотекой которую использует...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru