Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Можно "встроить" exe в dll ?


Автор: V0fka 10.6.2014, 20:44
Привет!

1) Есть WPF проект, тип программы exe. В программе есть 1 окно, которое собственно и используется. Все работает, вопросов вроде нету.
2) Далее в новом проекте создается dll библиотека, которая использует функционал программы, описаной выше. Вроде тоже работает, каких-то проблем нету.

Но есть одно "неудобство". После компиляции проекта dll в каталоге с dll появляется exe-шник, который создавался на этапе 1) . Ну и если его из каталога убрать - то dll не фурычит. Можно как-то его "вшить" в dll, чтобы в результате была только 1 dll-ка?

Автор: Ilya81 11.6.2014, 08:07
Объединить сборки можно с помощью http://www.microsoft.com/en-us/download/details.aspx?id=17630. Только если объединять в DLL, запуск-то как будет делаться? Т. е. для какой цели DLL в таком случае?

Автор: jonie 11.6.2014, 10:11
Как вариант включить сборку (exe) в ресурсы и грузить оттуда руками

Автор: HalkaR 11.6.2014, 11:01
Правильным решением было бы выделить всю общюю логику и код в отдельную сборку и референсить ее из обоих проектов.

Автор: V0fka 12.6.2014, 12:06
Цитата(Ilya81 @  11.6.2014,  08:07 Найти цитируемый пост)
Объединить сборки можно с помощью ILMerge.

А платформа потом поймет, что ехе-шник надо искать не "рядом", а "внутри"?

Цитата(Ilya81 @  11.6.2014,  08:07 Найти цитируемый пост)
Только если объединять в DLL, запуск-то как будет делаться? Т. е. для какой цели DLL в таком случае?

DLL написана под другую программу, по определенным правилам (типо плагин). И она получается как обертка над этим exe-шником, т.к. эта другая программа с ним напрямую общаться не умеет.

Цитата(jonie @  11.6.2014,  10:11 Найти цитируемый пост)
Как вариант включить сборку (exe) в ресурсы и грузить оттуда руками 

А можно для танкистов подробней?

Цитата(HalkaR @  11.6.2014,  11:01 Найти цитируемый пост)
Правильным решением было бы выделить всю общюю логику и код в отдельную сборку и референсить ее из обоих проектов. 

Дело в том, что вся общая логика и код - находятся в этом ехе-шнике. А DLL - это обертка над ним (я выше писал почему так).

Преследую цель - чтобы на выходе получился 1 файл.

Автор: Ilya81 16.6.2014, 05:18
Цитата(V0fka @  12.6.2014,  12:06 Найти цитируемый пост)
А платформа потом поймет, что ехе-шник надо искать не "рядом", а "внутри"?

По идее должно сработать, единственное, включать EXE в DLL я ни разу не пробовал. Но наоборот срабатывает.

Автор: HalkaR 17.6.2014, 11:34
Цитата(V0fka @  12.6.2014,  12:06 Найти цитируемый пост)
Дело в том, что вся общая логика и код - находятся в этом ехе-шнике. А DLL - это обертка над ним (я выше писал почему так).

Ну так вынисите ее в отдельную сборку про это и речь. Или exe вы прямо через запуск в отдельном пройессе используете?
Цитата(V0fka @  12.6.2014,  12:06 Найти цитируемый пост)
Преследую цель - чтобы на выходе получился 1 файл. 

Зачем?

Автор: V0fka 18.6.2014, 12:16
Цитата(Ilya81 @  16.6.2014,  05:18 Найти цитируемый пост)
По идее должно сработать, единственное, включать EXE в DLL я ни разу не пробовал. Но наоборот срабатывает.

Понял, на досуге посмотрю-попробую, спасибо!

Цитата(HalkaR @  17.6.2014,  11:34 Найти цитируемый пост)
Ну так вынисите ее в отдельную сборку про это и речь. Или exe вы прямо через запуск в отдельном пройессе используете?

ехе - это и есть другая сборка, на которую я ссылаюсь в DLL-ке. Но после компиляции на выходе получается 2 файла: dll и ехе (это 2 отдельные сборки).

Цитата(HalkaR @  17.6.2014,  11:34 Найти цитируемый пост)
Зачем? 

Мне хочется, чтоб не было "лишних" файлов smile .

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)