Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/47: Рейтинг темы: голосов - 47, средняя оценка - 4.79
2 / 2 / 1
Регистрация: 18.05.2018
Сообщений: 14

Компиляция в один exe файл

28.05.2018, 11:01. Показов 9512. Ответов 5

Студворк — интернет-сервис помощи студентам
Когда компилирую,у меня в DEBUG папке,лежит много файлов
exe.
.exe.config
.pdb
.dll
.dll

Если я вытащу один exe,то он не будет запускаться
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2018, 11:01
Ответы с готовыми решениями:

Компиляция в один файл
Доброго времени суток. Написал небольшую программку, в которой есть пару картинок и музыка. Как мне скомпилировать в один .exe файл всю...

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

Компиляция в один exe-файл
Добрый день КОЛЕГИ!!!!!! у меня возник хоть и глупый но всеже вопрос: при компиляции проэкта WPF в папочку release вместе с exe-файлом...

5
Unnamed
 Аватар для kingzfate
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
28.05.2018, 11:04
Tupik1111, видимо вы используете сторонние DLL, если у вас есть их исходники, можете просто добавить все коды в программу, если же нет, то необходимо исполняющий файл хранить вместе с DLL
0
2 / 2 / 1
Регистрация: 18.05.2018
Сообщений: 14
28.05.2018, 11:07  [ТС]
kingzfate, А можно как-то эти dll склеить с exe?Чтобы был 1 файл
0
Unnamed
 Аватар для kingzfate
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
28.05.2018, 11:13
Tupik1111,
Да, можно. Зависимую библиотеку можно встроить в ресурсы и подгружать оттуда вручную. Предполагается, что ваша библиотека уже находится в References проекта, проект собирается, программа успешно запускается.

Для начала добавьте в проект библиотеку как ресурс:

Меню Project -> Add Existing Item... - выбираете вашу сборку (dll, в диалоге открытия выберите тип файлов Executable Files). Библиотека появится в списке файлов проекта.
Вызовите контекстное меню на добавленном файле, выберите Properties. Затем установите в открывшемся окне Build Actions -> Embedded Resource.
Добавьте в ваш проект следующий класс:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static class Resolver
{
    private static volatile bool _loaded;
 
    public static void RegisterDependencyResolver()
    {
        if (!_loaded) {
            AppDomain.CurrentDomain.AssemblyResolve += OnResolve;
            _loaded = true;
        }
    }
 
    private static Assembly OnResolve(object sender, ResolveEventArgs args)
    {
        Assembly execAssembly = Assembly.GetExecutingAssembly();
        string resourceName = String.Format("{0}.{1}.dll",
            execAssembly.GetName().Name,
            new AssemblyName(args.Name).Name);
 
        using (var stream = execAssembly.GetManifestResourceStream(resourceName)) {
            int read = 0, toRead = (int)stream.Length;
            byte[] data = new byte[toRead];
 
            do {
                int n = stream.Read(data, read, data.Length - read);
                toRead -= n;
                read += n;
            } while (toRead > 0);
 
            return Assembly.Load(data);
        }
    }
}
Этот класс загрузит зависимую сборку из ресурса, как только основная программа обратится к ней, используя обработчик события AppDomain.AssemblyResolve.

В классе, где находится точка входа программы, добавьте статический конструктор и вызовите метод RegisterDependencyResolver. Для примера, пусть у вас имеется консольное приложение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
class Program
{
    static Program()
    {
        Resolver.RegisterDependencyResolver();
    }
 
    static void Main(string[] args)
    {
        // ...
    }
}
Заботиться о выгрузке сборки не надо, т.к. это все равно невозможно (можно выгрузить только домен целиком).

Пример подсмотрен в книге Дж. Рихтера "CLR via C#".
0
Эксперт .NET
 Аватар для Rius
13018 / 7584 / 1660
Регистрация: 25.05.2015
Сообщений: 23,040
Записей в блоге: 14
28.05.2018, 11:16
Цитата Сообщение от Tupik1111 Посмотреть сообщение
А можно как-то эти dll склеить с exe?Чтобы был 1 файл
Вот зачем?
Куча программ распространяется в виде exe + dll. Кому надо красиво - делают инсталлятор.
0
Эксперт .NET
 Аватар для Usaga
14071 / 9289 / 1346
Регистрация: 21.01.2016
Сообщений: 34,846
28.05.2018, 13:27
Цитата Сообщение от Tupik1111 Посмотреть сообщение
А можно как-то эти dll склеить с exe?Чтобы был 1 файл
Оно вам мешает? Вы сами только однофайловым ПО пользуетесь? Или просто дважды по ярлыку щёлкаете и спокойно работаете? Откуда такая потребность вообще?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2018, 13:27
Помогаю со студенческими работами здесь

Компиляция библиотек в один exe
Всем привет, очень нужна помощь, есть проект на гитхабе https://github.com/xmrig/xmrig-nvidia После компиляции за ехе приходится таскать...

Компиляция в exe файл
Сделал программу с GUI на Matlab'е, а вот как скомпилировать в exe который бы запускался и работал на другой машине на которой не...

Компиляция в EXE файл
Помогите пожалуйста откомпилировать в EXE файл или хотя бы как правильно запустить его. Зарание очень буду очень благодарен.

Java SE 8. Компиляция в exe-файл
Здравствуйте. Пишу программу в Eclipse на Java. Мне нужно скомпилировать не байт-код, а exe-шник. Как это сделать?

Компиляция в один файл
Всем привет. Подскажите, пожалуйста, как мне быть Написал я программу-информатор, в которой используются txt файлы и картинки,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru