Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
9 / 9 / 6
Регистрация: 09.05.2015
Сообщений: 498
1

Как множество dll собрать в один dll или exe файл?

11.02.2020, 18:25. Просмотров 1444. Ответов 34

Сделал тестовый проектик по работе с БД (Entity Framework), скомпилировал и как глянул в папку Debug....., а там куча dll файлов. Путем экспериментов я понял, что исполняемый файл exe не может работать без таких файлов как:

-EntityFramework.dll
-MySql.Data.EntityFramework.dll
-MySql.Data.dll
-ConsoleApp19.exe.config

Можно ли все 3 dll файла запаковать в исполняемый файл?(и ConsoleApp19.exe.config если можно-хотя вряд ли)
как это сделать? приложение ресурсов компьютера так само будет жрать или больше?

ну и вопросы у меня, да?) слышал просто такую байку, что если сторонними программами зашивать dll в исполняемый файл, то будет больше ресурсов компьютера брать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2020, 18:25
Ответы с готовыми решениями:

Как объединить exe и Dll в один файл
Привет! У меня есть файл: Exe DLL Файл exe не запускается без DLL Как можно соеденить...

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

Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку
Подскажите, как должен выглядеть код простейшей программы на C# (Loader.exe), которая бы загружала...

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

34
256 / 227 / 56
Регистрация: 03.02.2011
Сообщений: 1,929
Записей в блоге: 1
11.02.2020, 18:28 2
Sayanchik777, не стоит этого делать. Можно, ILMerge но не надо.
0
9 / 9 / 6
Регистрация: 09.05.2015
Сообщений: 498
11.02.2020, 18:29  [ТС] 3
А путем через Visual Studio? в свойствах проекта есть вкладка ресурсы dll файлы можно так внедрить?
0
Эксперт .NET
7112 / 4681 / 1122
Регистрация: 25.05.2015
Сообщений: 14,303
Записей в блоге: 14
11.02.2020, 20:20 4
Путём - не делать такую фигню.
См. у меня тут в блоге.
0
256 / 227 / 56
Регистрация: 03.02.2011
Сообщений: 1,929
Записей в блоге: 1
11.02.2020, 21:42 5
Цитата Сообщение от Rius Посмотреть сообщение
См. у меня тут в блоге.
А есть ли решение для такого:
- имею EXE
- имею свою собственную DLL, в которой несколько классов расширений...ну...для string, к примеру
- хочу чтоб в составе дебага эта моя DLL-ка была как подключённая ссылка, а на момент билда, к примеру Release, весь код перекочёвывал внутрь EXE (с учётом того что я знаю что там тока .NET типы)
Что-то вроде новомодного Core но для FW3.5-4.8

Зачем надо:
- не хочу таскать мой "суперсекретный очень всем нужный" код рядом
- лень каждый раз впихивать сниппеты, их может быть много
- лень копировать исходные .cs в папку с проектом
0
Эксперт .NET
8116 / 5549 / 937
Регистрация: 21.01.2016
Сообщений: 21,194
12.02.2020, 07:30 6
Цитата Сообщение от skilllab Посмотреть сообщение
- не хочу таскать мой "суперсекретный очень всем нужный" код рядом
Вы же это не руками, как грузчик, делаете, так ведь?

Цитата Сообщение от skilllab Посмотреть сообщение
- лень каждый раз впихивать сниппеты, их может быть много
Поясните о чём речь.

Цитата Сообщение от skilllab Посмотреть сообщение
- лень копировать исходные .cs в папку с проектом
Вот это тоже не понял. Что куда копировать и зачем?
0
Boogie
596 / 529 / 156
Регистрация: 13.04.2015
Сообщений: 1,579
12.02.2020, 07:37 7
Цитата Сообщение от Rius Посмотреть сообщение
Путём - не делать такую фигню.
А почему нельзя dll добавить в ресурсы, а при запуске программы распаковать рядом с программой и использовать ?

Почему это плохо ?

Не по теме:

Никакого сарказма, просто спрашиваю..

0
Эксперт .NET
7112 / 4681 / 1122
Регистрация: 25.05.2015
Сообщений: 14,303
Записей в блоге: 14
12.02.2020, 07:51 8
А какой смысл? Смотри, как я могу?
Программы с кучей библиотек поставляются в виде архива или инсталлятора. Пользователь внутрь не смотрит. Главное, чтобы программа работала. Лучше потратить время не на эти понты, а на улучшение работы программы.

Добавлено через 1 минуту
Собрать весь проект в exe-шник
1
Boogie
596 / 529 / 156
Регистрация: 13.04.2015
Сообщений: 1,579
12.02.2020, 08:15 9
Rius, так и не понял, в чём вред - засунуть в ресурсы малюсенькую стороннюю dll-очку , а потом её распаковать ? Зачем обязательно делать инсталлятор ?
0
Эксперт .NET
8116 / 5549 / 937
Регистрация: 21.01.2016
Сообщений: 21,194
12.02.2020, 08:28 10
I can, вред в лишней работе как программиста, так и приложения, которое должно каждый раз распаковываться и куда-то складывать свои модули, хотя могло бы спокойно лежать в Program Files без доступа на запись. И самое главное, кто это должен оценить, если пользователю нечего лезть в папку с EXE? Правильно, никто. Тогда для кого эти "понты"?
0
Boogie
596 / 529 / 156
Регистрация: 13.04.2015
Сообщений: 1,579
12.02.2020, 08:36 11
Цитата Сообщение от Usaga Посмотреть сообщение
Тогда для кого эти "понты"?
Тут нет никаких понтов и лишней работы. Сами ведь знаете, что загрузка в ресурсы происходит вообще без кода , а распаковка - одна короткая строчка. Да и для приложения нет лишней работы - проверит, если есть такая dll рядом, то ничего не происходит.
0
162 / 137 / 35
Регистрация: 25.11.2015
Сообщений: 910
12.02.2020, 08:55 12
А какой тип приложения? WPF, MVC? Есть же варианты когда при публикации можно указать компилировать все в одну сборку.

Цитата Сообщение от skilllab Посмотреть сообщение
- не хочу таскать мой "суперсекретный очень всем нужный" код рядом
А суперсекретный код все-равно лежит практически в открытом доступе и без разницы где он находится, рядом или внутри сборки

Цитата Сообщение от skilllab Посмотреть сообщение
- лень каждый раз впихивать сниппеты, их может быть много
Цитата Сообщение от skilllab Посмотреть сообщение
- лень копировать исходные .cs в папку с проектом
сниппеты нужны для хранения шаблонов, а не своих наработок. Если есть какие-то свои наработки, то намного проще все собрать в отдельной сборке и пользовать оттуда, чем каждый раз в проект копипастить код. Из опыта, так по мне 99.9% что надо уже давно написано и лежит на NuGet. Но естли наработка действительно очень нужная и нигде ее нету, то что мешает сделать публичный проект на том же гитхабе или битбакете, а чтобы не держать сборку у себя - держать ее на том же NuGet?
0
256 / 227 / 56
Регистрация: 03.02.2011
Сообщений: 1,929
Записей в блоге: 1
12.02.2020, 09:14 13
Цитата Сообщение от I can Посмотреть сообщение
Почему это плохо ?
Не то чтобы плохо, но:
- в современных виндовсах папка пользователя это AppData/.... Всё что не в неё - это мусор, который можно забыть удалить
- в современных виндовсах в папке ProgramFiles (если вдруг захочется пихнуть) нельзя записывать файлы без повышения прав
- антивирусы, бывает, не любят, когда приложение пытается создавать какие-то файлы "из себя". Было пару раз, когда антивирь у заказчика пихал файл в песочницу, а прога пыталась создать и сохранить Excel. Только куда ей надо было это делать? Не скажу за распаковку, конкретно, но факт имеет место быть.
- а что если сборка, которую распаковываешь, уже существует в GAC?

Usaga, я про то, что было бы классно иметь функциональность в студии, которая позволяла бы вновь созданные типы, которые лежат рядом в солюшене в виде сборок, эмбеддить в финальную сборку. По типу (а не прям как там) ЭТОГО, но без гемора со всеми этими условиями.
Ну, к примеру: создал я решение с двумя проектами. В одном консолька, в другом сборка с классом. Всё дебажу, всё отлавливаю, всё по-красоте. Только захотелось релиз собрать, студия ХОП и взяла каким либо особым образом, сборку с классом и консольку объединила напрямую скопипастив код в одну сборку, в данном случае в консольку.

Добавлено через 2 минуты
Цитата Сообщение от yurickas Посмотреть сообщение
суперсекретный код все-равно лежит
Я сыронизировал ))) В конкретном посыле подразумевалось невозможность переиспользования "в лоб". Т.е. без MainAssembly (EXE)
Цитата Сообщение от yurickas Посмотреть сообщение
все собрать в отдельной сборке и пользовать оттуда
см. выше

Добавлено через 4 минуты
Цитата Сообщение от yurickas Посмотреть сообщение
сниппеты нужны для хранения шаблонов
Ну, мне ж ничего не мешает сделать там
C#
1
2
public class $MyMegaSuperClassName
{// куча кода}
1
Эксперт .NET
8116 / 5549 / 937
Регистрация: 21.01.2016
Сообщений: 21,194
12.02.2020, 09:57 14
Цитата Сообщение от I can Посмотреть сообщение
Тут нет никаких понтов и лишней работы. Сами ведь знаете, что загрузка в ресурсы происходит вообще без кода , а распаковка - одна короткая строчка. Да и для приложения нет лишней работы - проверит, если есть такая dll рядом, то ничего не происходит.
В том то и дело, что это - понты. Кому это нужно? В смысле, какую проблему это решает? Никакую) Значит - понты.

Цитата Сообщение от skilllab Посмотреть сообщение
Usaga, я про то, что было бы классно иметь функциональность в студии, которая позволяла бы вновь созданные типы, которые лежат рядом в солюшене в виде сборок, эмбеддить в финальную сборку. По типу (а не прям как там) ЭТОГО, но без гемора со всеми этими условиями.
Ну, к примеру: создал я решение с двумя проектами. В одном консолька, в другом сборка с классом. Всё дебажу, всё отлавливаю, всё по-красоте. Только захотелось релиз собрать, студия ХОП и взяла каким либо особым образом, сборку с классом и консольку объединила напрямую скопипастив код в одну сборку, в данном случае в консольку.
Я эту хотелку сразу понял) Я имел в виду, какая от этого польза практическая? Кто это может оценить? Ладно в плюсах, там прошивку какую формировать так можно или ещё какая практическая ценность. Но нам-то (.NET-разработчикам) от этого что? Пользователю удобнее? Нет. Разработка в чём-то проще? Нет.
0
Boogie
596 / 529 / 156
Регистрация: 13.04.2015
Сообщений: 1,579
12.02.2020, 10:10 15
Цитата Сообщение от Usaga Посмотреть сообщение
какую проблему это решает?
Проблему потери пользователем библиотеки при переносе с компа на комп.
0
Эксперт .NET
7112 / 4681 / 1122
Регистрация: 25.05.2015
Сообщений: 14,303
Записей в блоге: 14
12.02.2020, 10:14 16
Вы часто таскаете? Архивы не? Инсталляторы не?
Вы видели portable версию libre office? Посмотрите.
0
162 / 137 / 35
Регистрация: 25.11.2015
Сообщений: 910
12.02.2020, 10:19 17
Цитата Сообщение от skilllab Посмотреть сообщение
Ну, мне ж ничего не мешает сделать там
C#
1
2
public class $MyMegaSuperClassName
{// куча кода}
Правильно, ничего не мешает, но ой как не помогает, когда тут кучакода, ты вставляешь его в свой код и получаешь кучу конфликтов, а потом сидишь и думаешь: блин, лучше бы руками написал.

такую кучу кода, я думаю, правильнее было бы засунуть в отдельную сборку в виде абстрактного класса или метода расширения. Тогда если какой конфликт - или сразу знаешь что не подходит, или наследуешься от него и перегружаешь что тебе надо.

Сниппеты с кучей кода хороши на презентациях и учебных уроках, когда надо сделать много и быстро, но только для того, чтобы показать ))

Добавлено через 2 минуты
Цитата Сообщение от I can Посмотреть сообщение
Проблему потери пользователем библиотеки при переносе с компа на комп.
Для этого и делаются инсталляторы. По крайне мере, при деинсталле сама уберется куча мусора из системы, которая программа натаскала.
0
Boogie
596 / 529 / 156
Регистрация: 13.04.2015
Сообщений: 1,579
12.02.2020, 10:24 18
Цитата Сообщение от Rius Посмотреть сообщение
Вы часто таскаете?
Да.

Пользователи считают, что программа - это ехе и всё.
Проводить с ними компьютерный ликбез - это не моя забота.
Совсем свежий пример:
Юзер жалуется:
"Ой, а у меня программа перестала разговаривать"
Проверяю, спрашиваю:"Где папка "Sounds" ? "
- А мы думали она не нужна. Просто перенесли саму программу...

------

К тому же обновление программы упрощается(если, допустим, еще одну dll добавил), достаточно заменить exe на новый.
Инсталпятор переписывать и компилировать, а также запускать его заново у пользователя не нужно.

Добавлено через 2 минуты
Цитата Сообщение от yurickas Посмотреть сообщение
деинсталле сама уберется куча мусора из системы, которая программа натаскала.
Вот именно этот мусор и останется, удалится лишь то, что было установлено.
0
Эксперт .NET
7112 / 4681 / 1122
Регистрация: 25.05.2015
Сообщений: 14,303
Записей в блоге: 14
12.02.2020, 10:26 19
I can, опять этот баян..
Вы пользователей опрашивали или решили за них, посмотрев на других впихивателей?
Вы portable версию реально применяемого и сложного приложения видели?
Вы не умеете делать обновлятор и инсталлятор? По удалению мусора понятно, что да.
Но пихать dll внутрь - наше всё...
0
Boogie
596 / 529 / 156
Регистрация: 13.04.2015
Сообщений: 1,579
12.02.2020, 10:29 20
Цитата Сообщение от Rius Посмотреть сообщение
Вы не умеете делать обновлятор и инсталлятор?
Умею и делал с помощью InnoSetup...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2020, 10:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Получение информации о бинарности (x64 - x32) dll или exe файлах
Добрых день. Появилась необходимость получения информации о разрядности dll или exe файлах (или...

EXE & DLL, DLL не запускается, 500 ошибка
Делаю EXE, скрипт простой, всё работает, на Apache и FPServer. Компилирую в DLL, закидываю на...

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

Как собрать проект в .exe файл, а не в dll?
Я работаю над проектом(консольным) по сути полностью построенном на .NET и не могу понять почему...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.