Я написал проект на С#, который использует много изображений, модели Milk и openGL, и я хочу упаковать все в один exe, чтобы я мог загрузить его на свой сайт. Прямо сейчас я получил exe, который зависит от других файлов, таких как jpgs и т.д. «. Я пытался использовать ILMerge, но не мог заставить его работать. Есть ли более простое решение? спасибо.
Segev 08 авг. 2012, в 12:59
Поделиться
Вы хотите создать настройку?
Arsen Mkrtchyan 08 авг. 2012, в 10:28
Поделиться:
5 ответов
Лучший ответ
Добавьте это как внедренный ресурс.
Внутри Visual Studio:
- Перейдите в Solution Explorer,
- Щелкните правой кнопкой мыши изображение,
- GO для создания действий: выберите встроенный ресурс.
У вас будет этот образ внутри exe. Позже вы можете использовать Reflection и получить изображение при запуске приложения.
========= Получение встроенного изображения из приложения =========
Сначала разрешите первую проблему: поместив изображения в качестве встроенного ресурса.
Как объединить несколько файлов PDF
Вторая проблема: доступ к изображениям с помощью Reflection:
private void Form1_Load(System.Object sender, System.EventArgs e)
Заимствованный исходный код здесь:
Rajesh 08 авг. 2012, в 12:22
Поделиться
Что вы подразумеваете под отражением? Я изменил все мои фотографии на Embedded, и я вижу, что мой exe больше в папке отладки, но если я удаляю фотографии из папки отладки и пытаюсь запустить exe, я получаю сообщение об ошибке «это приложение должно закрыться ..»
Segev 08 авг. 2012, в 11:43
Как будто exe-файл все еще зависит от других файлов, хотя и содержит их.
Segev 08 авг. 2012, в 11:52
Теперь, когда вы скомпилировали ваши Изображения, ваши изображения находятся внутри exe, и размер exe, очевидно, увеличится. Так как он предоставил вам возможность поместить ваше изображение в exe. Теперь вы можете взять свой exe-файл куда угодно и запускать приложение в любом месте, не беспокоясь о ваших изображениях Изображения на самом деле встроены в exe, где только сам exe может получить к нему доступ. Если вы просто хотите загрузить изображения, вы можете заархивировать и загрузить их на свой веб-сайт, если это просто для загрузки материала.
Rajesh 08 авг. 2012, в 12:05
В этом контексте Reflection — это способ доступа к изображениям, текстам или всему, что вы создаете как встроенный ресурс. Отражение имеет широкое использование. Одним из способов использования является доступ к вашим изображениям из самого Exe.
Rajesh 08 авг. 2012, в 12:07
Это моя проблема. Exe больше, но не будет работать в другой папке. Он будет работать только в папке с фотографиями
Segev 08 авг. 2012, в 12:07
Я постараюсь объяснить себя лучше. Допустим, мой exe — 1 МБ, а a.jpg — 4 МБ. Сделал встроенную вещь и теперь мой exe стоит 5 мб. Exe будет работать только внутри папки с a.jpg. Если я удалю a.jpg, exe завершится с ошибкой Windows «Это приложение должно закрыться».
Компилирование всех файлов проекта в один EXE | Wpf
Segev 08 авг. 2012, в 12:10
Файлы находятся внутри exe. Как я могу получить к ним доступ с отражением? мне нужно добавить код выше к моему?
Segev 08 авг. 2012, в 12:16
msdn.microsoft.com/en-us/library/aa984367(v=vs.71).aspx может быть полезным для вас в этом случае ..
Rajesh 08 авг. 2012, в 12:19
Я использую что-то вроде этого, чтобы загрузить мои фото. Попытка выяснить, как использовать отражения от вашей ссылки. void GenerateTextures() < GL.glGenTextures(5, Textures); string[] imagesName = < «L.jpg», «M.jpg», «RR.jpg», «R.jpg», «floor2.jpg» >; for (int i = 0; i < 5; i++)
Segev 08 авг. 2012, в 12:33
Вы должны получить изображения из Reflection: Попробуйте что-то вроде: myAssembly.GetManifestResourceStream («YOURASSEMBLYNAMESPACE.L.jpg»); также проверьте ссылку msdn.microsoft.com/en-us/library/aa984367(v=vs.71).aspx
Rajesh 08 авг. 2012, в 12:37
Понял!! Большое спасибо!
Segev 08 авг.
2012, в 13:08
Поздравляю !! Ты сделал это. Теперь, пожалуйста, отметьте мой ответ как ответ 🙂 для всех этих усилий 2 часа: D
Источник: overcoder.net
Как скомпилировать все проекты солюшена в один .EXE?
Есть солюшен (Solution). В нем 4 проекта. Один главный, три второстепенных. Главный проект использует типы из второстепенных и наоборот. Короче все они переплетены. Как все это скомпилировать в один .EXE файл для последующего распространения? UPD Т.к. похоже,что не все поняли о чем речь, то постараюсь дополнить свой вопрос.
Вот небольшой пример: В solution Explorer видно, что в Solution добавлено два проект. Проект App2 зависит от проекта App1. App1 добавлен в References. Так же прописаны соответствующие зависимости.
Если просто откомпилировать этот Solution, то на выходе получим два файла — App2.exe и App1.dll. Таким образом, чтобы приложение заработало, скажем на другом компьютере, нужно переписать туда два этих файла. Иначе произойдет ошибка времени выполнения. Что-то вроде Could not load file or assembly. The system cannot find the file specified.
Так вот хотелось бы откомпилировать приложение таким образом, чтобы в итоге получился только один файл — App2.exe. И чтобы распространять это приложение можно было одним файлом. А файл App1.dll была как бы встроена в него.
Отслеживать
Mikhail Danshin
задан 23 ноя 2015 в 17:08
Mikhail Danshin Mikhail Danshin
1,129 1 1 золотой знак 9 9 серебряных знаков 27 27 бронзовых знаков
А в чём конкретно проблема?
Почему нельзя деплоить один .exe и три .dll?
23 ноя 2015 в 18:41
Сразу скомпилировать в один общий exe нельзя. Но можно слить несколько dll/exe в один уже после сборки. Посмотрите ответы по ссылке.
– user177221
23 ноя 2015 в 19:29
Или, как вариант, можно влить ваши dll как ресурсы — но я бы вам посоветовал вариант с ilmerge — это нормальный официальный ™ способ, а не самописный костыль.
– user177221
23 ноя 2015 в 19:39
Да, ILMerge помог. Добавил в Post-build events вот эту строку «$(SolutionDir)ILMergeILMerge.exe» /out:»$(TargetDir)$(TargetName).all.exe» «$(TargetDir)$(TargetName).exe» «$(TargetDir).dll» /target:exe /targetplatform:v4,C:WindowsMicrosoft.NETFramework64v4.0.30319 /wildcards* Работает замечательно!
Источник: ru.stackoverflow.com
Как собрать архив из нескольких частей архиватором 7-zip
Что делать если Вам нужно собрать один файл из нескольких архивов. Это очень просто сделать имея под рукой архиватор 7-Zip и прочитав нашу короткую инструкцию.
Для начала заходим в папку с этими архивами и выделяем их.
Выделив нужные файлы жмем по ним правой кнопкой мыши, переходим на вкладку 7-Zip и нажимаем здесь на «Extract files. ».
Все, в результате этих не хитрых действий Вы получите свой заветный файл, который хотели открыть.
Как разбить файл на несколько архивов Вы можете посмотреть здесь.
Источник: besplatnye-programmy.com