При разработке проекта C# в Visual Studio у меня есть три варианта типа вывода. Консольное приложение, приложение Windows и библиотека классов. AFAIK, единственное различие между DLL и EXE, заключается в том, что EXE должен иметь определенную точку входа и вызываться, когда файл дважды щелкнут. Однако при запуске EXE, созданного из консольного приложения, создается консольное окно. Таким образом, очевидно, что что-то происходит, кроме запуска CLR, а затем вызывает мой метод Main. Что запускает консольное окно? Когда я запускаю EXE, созданный из приложения Windows, есть и другой код, или это просто мой основной метод?Что запускает мое приложение C#?
ответ
Ваш переносимый исполняемый файл (exe) будет содержать информацию о том, какое приложение оно есть.
Subsystem
флаг IMAGE_OPTIONAL_HEADER определяет, с каким интерфейсом пользователя создается приложение.
IMAGE_SUBSYSTEM_WINDOWS_CUI
определяет консольное приложение, IMAGE_SUBSYSTEM_WINDOWS_GUI
определяет приложение Windows и так далее.
Для получения дополнительной информации Peering Inside the PE: A Tour of the Win32 Portable Executable File Format
Тип выходного сигнала является параметром конфигурации для вашего проекта, который говорит Visual Studio, что делать при компиляции. Если установлено Консольное приложение, оно будет генерировать exe-файл с кодом для запуска окна консоли.
Разница между dll и exe больше, чем основной метод. Visual Studio сгенерировала дополнительные коды в exe-файле, который создает консоль и вызывает основной метод. Подробнее о том, как это работает exe-файл, см. http://en.wikipedia.org/wiki/Portable_Executable.
В этой связи инквизитор добавил несколько заметок, в которых упоминалось сообщение в блоге (2-я ссылка). Is it possible to build a Console app that does not display a console Window when double-clicked?
http://blogs.msdn.com/b/oldnewthing/archive/2009/01/01/9259142.aspx
То же содержание, как ответ Siram в https://stackoverflow.com/a/30084790/2005526, но, чтобы помочь вам с будущим ищет это были ключевые слова, используемые в Google, чтобы найти указанные ресурсы. «двойной клик exe запускает консоль»
- 1. Genymotion не запускает мое приложение
- 2. Jubula не запускает мое приложение
- 3. Запускает Valgrind, замедляет мое приложение?
- 4. Android Studio 2.1 не запускает мое приложение
- 5. Как проверить метод, который запускает мое приложение?
- 6. Tomcat не запускает мое веб-приложение
- 7. Установщик приложений Microsoft запускает мое приложение ClickOnce
- 8. Xcode 8 не запускает мое приложение
- 9. PassengerPreStart действительно не запускает мое приложение Rails3
- 10. Модульное тестирование XCode 5: запускает мое приложение
- 11. Как определить, кто запускает мое приложение?
- 12. Выполнение скрипта Когда XCode запускает мое приложение
- 13. Android-эмулятор Android не запускает мое приложение
- 14. Xcode не запускает мое приложение для отладки
- 15. Мое приложение OWIN не запускает мое собственное связующее устройство модели
- 16. Jenkins slave не запускает мое приложение для метро
- 17. C++ Builder не запускает приложение после «Запускать»
- 18. C++: получить имя процесса, выполняющего мое приложение
- 19. Когда мое приложение запускает сетевой том при запуске
- 20. Push-уведомление не запускает мое приложение, FinishedLaunching никогда не вызывается
- 21. PM2 не запускает мое приложение nodejs после перезапуска сервера
- 22. Android-устройство появляется в DDMS, но не запускает мое приложение
- 23. Можно ли определить, какой процесс запускает мое приложение .Net?
- 24. Сканирование NFC-тегов запускает только мое приложение для запуска
- 25. Почему мое приложение для тестирования Cocos2d не запускает события «touchhesBegan»?
- 26. Xcode остается на «Running», но не запускает мое приложение
- 27. Как мое приложение надежно запускает сервис при выходе из приложения?
- 28. Почему мое приложение не запускает все запланированные уведомления?
- 29. wxPython запускает мое приложение дважды при импорте подпакета
- 30. PsExec не обнаруживает, что мое консольное приложение C# завершено
Есть ли способ посмотреть этот код? –
Вы можете использовать декомпилятор, как описано здесь: http://stackoverflow.com/questions/179741/how-do-i-decompile-a-net-exe-into-readable-c-sharp-source-code. Вы также можете использовать 7-zip для чтения текстовых файлов. – Kentative