Как объединить dll и exe в один файл
Обновлено: 21.11.2024
Да, слить dll-файлы невозможно; для этого нет инструмента, и это невозможно сделать вручную. Вы должны изменить исходный код.
Как совместить DLL и один EXE?
- Установите ILMerge в соответствии с указаниями других потоков.
- Затем перейдите в папку установки, по умолчанию C:\Program Files (x86)\Microsoft\ILMerge.
- Перетащите файлы Dll и Exes в эту папку.
- Щелкните правой кнопкой мыши по этой папке, удерживая нажатой клавишу "Shift", и выберите "Открыть командную строку".
- Записать ilmerge myExe.exe Dll1.dll /out:merged.exe.
Как объединить сборки?
- Шаг 1. Добавьте ILMerge.MSBuild.Task с помощью Nuget в проект Visual Studio.
- Шаг 2. Используйте команду «Install-Package ILMerge. MSBuild. Task» и вставьте в консоль диспетчера пакетов.
- Шаг 3. Также необходимо установить пакет ILMerge с помощью команды «Install-Package ilmerge» в консоли диспетчера пакетов.
Как добавить DLL в WPF?
Решение 1. Просто загляните в обозреватель решений и откройте свой проект. Щелкните правой кнопкой мыши «Ссылки» и выберите «Добавить ссылку». Следуйте диалоговым окнам, чтобы выбрать файл DLL, добавить его и закрыть диалоговое окно. После этого ваши элементы управления должны появиться на панели инструментов.
Как использовать подключаемый модуль ILMerge CRM?
Краткое руководство
- Откройте свой подключаемый модуль CRM.
- Ссылка на необходимые сборки, желательно с использованием Nuget.
- Установите пакет MSBuild IlMerge Nuget с помощью следующей команды: Install-Package MSBuild.ILMerge.Task.
- Убедитесь, что для сборок Microsoft для параметра Копировать локально установлено значение true, как описано выше.
Как объединить несколько исполняемых файлов?
Вы можете добавлять данные в исполняемый файл, так работают самораспаковывающиеся архивы. Однако вам понадобится собственный формат данных, аналогичный файловой системе, потому что у вас есть только один плоский файл .exe. Исполняемый файл, в который вы упаковываете два файла, должен затем извлечь эти файлы и, наконец, запустить их.
Что такое ILRepack?
ILRepack – это инструмент, позволяющий объединять несколько сборок в одну сборку. Это может быть полезно при развертывании приложения, которое имеет несколько зависимостей. В этом случае вы можете объединить все dll и exe в один exe-файл, чтобы его было проще развернуть.
Встроенные файлы называются встроенными ресурсами, и к этим файлам можно получить доступ во время выполнения с помощью класса Assembly класса System. Пространство имен отражения. Любой файл в проекте можно превратить во встроенный файл. Поскольку файл встроен, нет необходимости использовать какие-либо пути к папкам или местоположения для доступа к файлу.
Можно ли объединить несколько исходных файлов в один проект?
Если все части вашей программы написаны вами на одном языке, вы, очевидно, можете просто добавить все исходные файлы в один проект. Результатом будет одна DLL или EXE, содержащая все зависимости. Однако, если ваша программа написана на нескольких языках или вы используете сторонние бинарные библиотеки, вам не повезло.
Как добавить DLL в проект Visual Studio?
Net Core 2 поддерживает прямые ссылки на внешние файлы . dll (например, библиотеки Net Standard, классические библиотеки .Net Framework). Вы можете сделать это через пользовательский интерфейс Visual Studio: щелкните правой кнопкой мыши Зависимости->Добавить ссылку->Обзор и выберите внешний файл .
Как вставить DLL в другую DLL?
Добавить DLL в качестве встроенного ресурса Сначала добавьте DLL в качестве ссылки. Затем добавьте ту же DLL в качестве файла в проект. Щелкните правой кнопкой мыши имя проекта > Добавить > Существующий элемент... Одна и та же DLL будет существовать дважды в разных папках проекта.
Как упаковать EXE-файл?
В Проводнике Windows,
- выберите один или несколько файлов, щелкните правой кнопкой мыши и выберите «Сжать в самораспаковывающийся .exe».
- щелкните папку правой кнопкой мыши и выберите «Сжать в самораспаковывающийся .exe».
- щелкните правой кнопкой мыши файл 7z (архив 7-Zip) и выберите «Преобразовать в самораспаковывающийся .exe».
Как объединить несколько файлов EXE?
NET Core необходимо использовать расширение . NET Framework. Теперь вы можете ссылаться на .
Как использовать ILMerge в Visual Studio?
Что такое костура?
Costura — это надстройка для зависимостей Fody Embeds в качестве ресурсов.
Можно ли загрузить несколько DLL в один EXE-файл?
В этой статье мы увидим, как загрузить несколько библиотек DLL в один EXE-файл или один файл DLL. Требования заключались в том, чтобы динамически загружать или внедрять несколько ресурсов DLL. (как внешняя, стороннего поставщика, так и внутренняя библиотека DLL), включая системные библиотеки DLL в виде пакета для упрощения использования.
Как объединить несколько сборок в один файл?
Этот форум перенесен в раздел вопросов и ответов Майкрософт. Посетите Microsoft Q&A, чтобы публиковать новые вопросы.
Отвечает:
Вопрос
Когда я создаю свое приложение вместе с моим .exe, создается список .dll. Проблема теперь, когда я просто тестирую на другой машине, нужно скопировать все .dll и .exe в одну папку, чтобы она работала? Можно ли объединить все .dll в .exe? Я пробовал ILMerge, он не работает.
Ответы
Надеюсь, это поможет.
Пожалуйста, не забудьте закрыть свои темы, отметив полезные сообщения как ответы, а затем начните новую тему, если у вас есть новый вопрос. Пожалуйста, не задавайте несколько вопросов в одной теме.
Еще один способ сделать это — сохранить сборки, на которые вы ссылаетесь, как ресурсы в вашем .exe и загрузить их оттуда.
Все ответы
Обычно разработчики просто копируют все эти dll и exe.
Почему это проблема?
Надеюсь, это поможет.
Необходимость установки нескольких библиотек DLL/Exes для приложения вряд ли является чем-то необычным. В чем конкретно у вас с этим проблема?
Обычно вы просто создаете проект установщика/настройки в своем прикладном решении (специфика этого зависит от вашей версии Visual Studio, но в VS 2012 вы просто добавляете Новый проект и выбираете Другие типы проектов->Настройка и развертывание).
Затем довольно просто сказать ему создать установочный exe-файл, содержащий выходные данные других ваших проектов.
Сохранение DLL отдельно также потенциально означает более быструю загрузку.
Приложения WPF часто могут справиться со всей возможной помощью, ускоряя загрузку.
Надеюсь, это поможет.
Моя проблема заключается в том, что я хочу развернуть это приложение как один простой исполняемый файл, просто дважды щелкнуть его и запустить. Так что я не хочу пропустить все эти .dll.
Надеюсь, это поможет.
Пожалуйста, не забудьте закрыть свои темы, отметив полезные сообщения как ответы, а затем начните новую тему, если у вас есть новый вопрос. Пожалуйста, не задавайте несколько вопросов в одной теме.
Вы подвергаетесь высокому риску того, что все это не заработает в конце процесса.
Сделайте то, что делают все остальные, и скопируйте dll с вашим exe.
Используйте более изощренный подход, который будет трудным.
Просто распространяйте dll и exe, не объединяя их.
Есть установщики, которые объединят их все в один файл MSI, так что вам нужно будет доставить только один файл setup.exe или любой другой файл.
У меня есть два DLL-файла, которые я хотел бы включить в свой EXE-файл, чтобы упростить его распространение. Я читал немного здесь и там, как это сделать, даже нашел хорошую тему здесь и здесь, но это слишком сложно для меня, и мне нужны настоящие базовые инструкции о том, как это сделать.
14 ответов 14
- Откройте CMD и перейдите в свой каталог. Скажем: cd C:\test
- Вставьте приведенный выше код.
- /out:finish.exe замените finish.exe на любое имя файла, которое вы хотите.
- За /out:finish.exe вы должны указать файлы, которые хотите объединить.
Я просто следовал вашим инструкциям, как вы упомянули выше. еще не слились. пожалуйста, помогите мне. В командной строке: ILMerge.exe/target:winexe/targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" /out:finish.exe myExe.exe mfc100u .dll mfc110u.dll msvcp110.dll Ошибка: при объединении возникла исключительная ситуация: ILMerge.Merge: не удалось загрузить сборку из папки «C:\test\моя папка\mfc 100u.dll». Пропуск и обработка остальных аргументов. Есть идеи, что случилось?
Иногда вам нужно 1) использовать Program Files (x86) 2) ввести полный путь к ILMerge. Используйте /target:exe для консольных приложений.
Windows по умолчанию поставляется с .NET framework здесь C:\Windows\Microsoft.NET\Framework . Таким образом, вы также можете использовать /targetplatform:"v2,C:\Windows\Microsoft.NET\Framework\v2.0.50727" или /targetplatform:"v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319" р>
Вам просто нужно установить nuget, а затем выполнить сборку. Окончательный исполняемый файл будет автономным.
Это очень интересный проект. но, похоже, это плагин для Fody ... так что вы могли бы немного улучшить этот ответ, предоставив некоторую информацию о Mono.Cecil и Fody (поскольку они оба являются зависимостями и действительно наиболее важны для подчеркивания). Но, да, сам плагин, похоже, упрощает встраивание и распространение dll настраиваемым образом.
Это вуду. Невероятно легко. Установите пакет Costura.Fody и Bam! ваша сборка создаст один большой толстый исполняемый файл.
Вау! Три дня я мучился, пытаясь заставить iLMerge работать с несколькими сторонними dll, у которых было несколько других ссылок, на которые мне нужно было указать, и хотя у меня были добавлены все зависимости, это все равно не работало, и после изучения журналов он мутировал некоторые имена пространств имен, говоря, что они дублируются. (Они были внутри сторонних сборок) Это сработало так же просто, как и сказал @CristianDiaconescu.
Загрузить ilmerge и графический интерфейс ilmergre .делает объединение файлов настолько простым, что я использовал их, и они отлично работают
Ссылка DLL на ваши ресурсы и использование AssemblyResolve-Event для возврата Resource-DLL.
Хорошо, я ни капельки не понимаю, что вы там написали ;-) Куда мне вставить этот код?
Хорошо, сначала вам нужно добавить DLL в ресурсы вашего проекта. Добавьте папку «Ресурсы» в свое решение и просто поместите туда свои dll. Щелкните правой кнопкой мыши свой проект -> Свойства -> Ресурсы. Там нажмите «Добавить ресурс» и добавьте свои dll. После этого перейдите в файл program.cs и добавьте код в Main() перед всем остальным.
Хорошо, я использовал вашу укороченную версию, но моя IDE сообщает мне, что имя "Сборка" недоступно в этом контексте :-/
В результате появляется следующее сообщение об ошибке: Исключение при слиянии: Неразрешенная ссылка на сборку не разрешена: System.Core. - Я создал bat-файл следующего содержания: ilmerge /target:winexe my_exe.exe my_dll.dll /out:merged.exe
Хорошо, у меня есть эта команда: ilmerge /target:winexe /target:platform:"v4,c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\" /out :merged.exe my_exe.exe my_dll.dll , но в приглашении говорится, что я должен указать хотя бы один входной файл и выходной файл. Я также безрезультатно поменял выходной параметр на входной.
Установите ILMerge в соответствии с указаниями других потоков
Затем перейдите в папку установки, по умолчанию C:\Program Files (x86)\Microsoft\ILMerge
Перетащите файлы Dll и Exes в эту папку
Щелкните правой кнопкой мыши по этой папке, удерживая нажатой клавишу Shift, и выберите "Открыть командную строку"
Обратите внимание, что сначала нужно написать исполняемый файл.
Вот вы и получили объединенный exe. Это может быть не лучший способ, если вы собираетесь делать это несколько раз, но самый простой для одноразового использования, я бы рекомендовал поставить Ilmerge на ваш путь.
Я просто следовал вашим инструкциям, как вы упомянули выше. Я также поместил ilmerge в свой системный путь. еще не слились. пожалуйста, помогите мне. В командной строке: >ilmerge myExe.exe mfc100u.dll mfc110u.dll /out:final.exe Ошибка: во время слияния возникло исключение: ILMerge.Merge: не удалось загрузить сборку из папки 'C:\test\my folder\mfc 100u.dll'. Пропуск и обработка остальных аргументов. Есть идеи, что случилось?
Спасибо за ответ. Но только в этом моем комментарии выше у mfc100u.dll есть место. Я хочу объединить более одного файла DLL. Я также попробовал ILMerge GUI. Но все равно столкнулся с той же проблемой. Пожалуйста, помогите мне.
Сначала добавьте DLL в свой проект-ресурсы. Добавьте папку "Ресурсы"
Обновление 2019 г. (только для справки):
Теперь публикация в dotnet должна создавать один файл .exe без использования каких-либо внешних инструментов.
Отлично, это работает, но вам просто нужно указать RuntimeIdentifier или RuntimeIdentifiers, и размер файла увеличится примерно на 65,4 МБ.
Также вы можете использовать ilmergertool в codeplex с графическим интерфейсом.
Вот официальная документация. Это также автоматически загружается на шаге 2.
Установите пакет ILMerge nuget через графический интерфейс или командную строку:
Убедитесь, что вы загрузили его. Теперь установите (не уверен, что это команда для этого, но просто перейдите к своим пакетам nuget): Примечание. Возможно, вам нужно установить его только для одного из ваших решений, если у вас есть несколько
Перейдите в папку решения и в папке пакетов вы должны увидеть «ILMerge» с исполняемым файлом:
Теперь вот исполняемый файл, который вы можете скопировать в папку \bin\Debug (или куда бы вы ни собирали свое приложение), а затем в командной строке/powershell сделать что-то вроде следующего:
Visual Studio собирает библиотеки DLL в exe (9)
У меня есть два DLL-файла, которые я хотел бы включить в свой EXE-файл, чтобы упростить его распространение. Я читал немного здесь и там, как это сделать, даже нашел хорошую тему здесь и здесь, но это слишком сложно для меня, и мне нужны настоящие базовые инструкции о том, как это сделать.
Установите ILMerge в соответствии с указаниями других потоков
Затем перейдите в папку установки, по умолчанию C:\Program Files (x86)\Microsoft\ILMerge
Перетащите файлы Dll и Exes в эту папку
Щелкните правой кнопкой мыши по этой папке, удерживая нажатой клавишу Shift, и выберите "Открыть командную строку"
Обратите внимание, что сначала нужно написать исполняемый файл.
Вот вы и получили объединенный exe. Это может быть не лучший способ, если вы собираетесь делать это несколько раз, но самый простой для одноразового использования, я бы рекомендовал поставить Ilmerge на ваш путь.
Я нашел решение Ниже приведены шаги: -
- Загрузите файл ILMerge.msi и установите его на свой компьютер.
- Открыть командную строку
- введите cd C:\Program Files (x86)\Microsoft\ILMerge Нажмите Enter
- C:\Program Files (x86)\Microsoft\ILMerge>ILMerge.exe /target:winexe /targetplatform:"v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319" /out:NewExeName.exe SourceExeName.exe DllName.dll
Для нескольких DLL: -
C:\Program Files (x86)\Microsoft\ILMerge>ILMerge.exe /target:winexe /targetplatform:"v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319" /out:NewExeName.exe SourceExeName.exe DllName1.dll DllName2.dll DllName3.dll
Загрузить ilmerge и графический интерфейс ilmergre . делает объединение файлов настолько простым, что я использовал их, и они отлично работают
Вот официальная документация. Это также автоматически загружается на шаге 2.
Установите пакет ILMerge nuget через графический интерфейс или командную строку:
Убедитесь, что вы загрузили его. Теперь установите (не уверен, что это команда для этого, но просто перейдите к своим пакетам nuget): Примечание. Возможно, вам нужно установить его только для одного из ваших решений, если у вас есть несколько
Перейдите в папку решения и в папке пакетов вы должны увидеть «ILMerge» с исполняемым файлом:
Теперь вот исполняемый файл, который вы можете скопировать в папку \bin\Debug (или куда бы вы ни собирали свое приложение), а затем в командной строке/powershell сделать что-то вроде следующего:
Теперь у вас будет новый исполняемый файл со всеми вашими библиотеками в одном!
Если вы хотите ссылаться на него во время разработки, просто добавьте в проект обычную ссылку DLL.
Встроить DLL в проект
Ссылка DLL на ваши ресурсы и использование AssemblyResolve-Event для возврата Resource-DLL.
В этой статье мы увидим, как загрузить несколько библиотек DLL в один EXE-файл или один файл DLL. Требования заключались в том, чтобы динамически загружать или внедрять несколько ресурсов DLL. (как внешняя, стороннего поставщика, так и внутренняя библиотека DLL), включая системные библиотеки DLL в виде пакета для упрощения использования.
Допустим, у нас есть две библиотеки DLL, которые мы хотим загрузить или встроить в одну DLL или исполняемый файл.
Мы поместим эти две библиотеки DLL в папку нашего проекта «resources», как показано ниже,
Шаг 1:
Щелкните правой кнопкой мыши на каждой DLL и установите для параметра «Копировать в вывод» значение false.
Шаг 2:
Обновить «Действие сборки» как встроенный ресурс
Шаги 1 и 2 показаны ниже,
Шаг 3:
Перейдите к файлу проекта -> Добавить ссылку -> Обзор->Выберите библиотеки DLL из расположенного ниже местоположения,
Снова установите их свойства, чтобы не копировать в выходной каталог, как показано ниже,
Это все, что нам нужно, чтобы приступить к написанию кода для программной загрузки DLL.
Ниже приведен полный код для достижения того же,
Наконец, создайте код. Ниже он создает одну DLL со всеми встроенными ресурсами.
Теперь этот вывод можно выполнить напрямую или добавить в качестве ссылки на другие проекты.
Все ссылки на все доступные классы, определенные во встроенных ресурсах, будут легко доступны для использования в целевой библиотеке DLL или приложении.
Пожалуйста, добавьте в закладки эту страницу и поделитесь этой статьей с друзьями.Подпишитесь на блог, чтобы получать уведомления о недавно опубликованных рекомендациях по проектированию и разработке программного обеспечения.
Читайте также: