Как создать смесь DLL и EXE в одном проекте C # в Visual Studio или другие инструменты сборки? - PullRequest
1 голос
/ 14 августа 2011

как создать смесь dll и exe в одном проекте C # в visual studio или других инструментах сборки?Это технически возможно?Да, я знаю, что это можно сделать в 2 или более проектов.

Ответы [ 2 ]

4 голосов
/ 14 августа 2011

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

Вы можете автоматизировать этот процесс, используя Visual Studio событие пост-сборки для вашего проекта.Это будет обрабатывать создание копии DLL каждый раз, когда у вас будет успешная сборка:

copy "$(TargetPath)" "$(TargetDir)$(TargetName).dll"
2 голосов
/ 14 августа 2011

Технически, смесь exe и dll была бы просто exe. Нет ничего плохого в том, чтобы использовать его в качестве библиотеки, например, ссылку на него в других проектах.

Во-первых, нам нужно понять, что и "exe", и "dll" в основном одинаковы, но разница заключается в том, как окна взаимодействуют с ними.

Когда Windows загружает DLL, она запускает код инициализации, а затем оставляет его в покое. Функции в dll вызываются, если на них явно ссылается приложение. Другое дело, что при сбое dll происходит сбой не только самого себя, но и приложения, поскольку dll запускается в памяти родительского приложения.

Когда Windows загружает exe, код инициализации exe отвечает за создание так называемого «сообщения сообщения», ничего, кроме цикла программы, который выполняется до тех пор, пока приложение работает. Сообщение насоса запрашивает сообщения от операционной системы. Windows отслеживает приложение как отдельную задачу. Он выделяет отдельную память как для exe, так и для приложения, использующего этот exe. Область памяти, в которой работает каждый exe-файл, называется «Process Space».

Дэн Эпплман - Разработка компонентов ActiveX с помощью Visual Basic 5.0

...