Конвертировать приложение Winform в консольное приложение - PullRequest
7 голосов
/ 06 августа 2010

Существует ли быстрый и грязный способ (или макрос VS) для преобразования приложения WinForms в консольное приложение? У меня есть ряд таких приложений, которые больше не нужны как приложения Winforms. Я полагаю, что мог бы создать кучу новых проектов и скопировать модули вставки и классы поверх них, но если бы я просто удалил единственную имеющуюся у меня форму и отредактировал / удалил несколько вещей, я бы лучше сделал это.

Ответы [ 4 ]

14 голосов
/ 06 августа 2010

Вы можете изменить настройки проекта, чтобы создать консольное приложение вместо приложения Windows (просто нажмите Ctrl + Enter в проекте в окне решения и внесите это изменение).

Это скомпилирует приложение как консольное приложение, и вы получите консоль. Тем не менее, вы все равно получите свои формы. Если вы не хотите иметь Windows Forms, вам нужно удалить формы и заменить их функциональные возможности аргументами командной строки или конфигурацией. Затем вы можете удалить ссылки Windows Forms, и они будут преобразованы.

6 голосов
/ 06 августа 2010

Нет, нет.Это чрезвычайно зависит от того, как изначально была написана программа.Если оригинальный программист сделал систему достаточно модульной, это не займет у вас много времени.Если вся логика заложена в коде WinForms, вам предстоит проделать серьезную работу.

Это ручное программирование / рефакторинг.

3 голосов
/ 06 августа 2010

Когда мне пришлось это сделать, я создал пустой WinForm и пустой консольный проект, а затем сравнил различия. Различия незначительны. Я открыл все проекты в виде XML-файлов в Visual Studio, а затем выполнил поиск и замену по мере необходимости, основываясь на различиях. Работал хорошо.

Затем я открыл каждый проект и исправил все ошибки, такие как отсутствующий метод точки входа и т. Д.

Кроме того, вы можете записать временный макрос для выполнения некоторых мирских вещей.


Обновление на основе комментариев

Различия в файлах проекта между приложениями «Windows Forms» и «Консоль» незначительны. Может быть, я должен был использовать работу trival .

Все, что вам нужно сделать, это изменить <OutputType>WinExe</OutputType> на <OutputType>Exe</OutputType>. Если программист не может сделать простой поиск и замену с открытыми файлами без ошибки, он не должен программировать.

Мне пришлось сделать это с более чем 50 приложениями для клиента. Один консультант сказал им, что для внесения изменений потребуется неделя. Я сказал своему клиенту, что смогу сделать это за час и на месте. Трудной частью этой работы было застревание в пробке.

Я открыл все файлы проекта в формате XML, затем изменил OutputType и StartupObject в файлах проекта, используя поиск и замену «в открытых документах».

Я создал макрос, который бы добавил «программный» модуль VB.NET, а другой - для класса C # с необходимой «основной» точкой входа и кодом запуска приложения.

Однажды в этот момент я написал небольшую программу, которая загружала бы каждый проект в Visual Studio 2008. Я запускал соответствующий макрос в зависимости от того, был ли проект VB.NET или C #. Я бы исправил все ошибки, скомпилировал, запустил приложение и закрыл. Небольшая программа затем запускает другую Visual Studio со следующим проектом. Самой сложной частью утилиты было получение путей ко всем проектам, потому что мне пришлось использовать DOS, как в dir /b /s *.vbproj > c:\project_listing.txt.

Если у ОП только несколько проектов, то я предлагаю открыть каждый проект и внести необходимые изменения.

Я использовал похожую технику для преобразования около 20 проектов WinCE / WinForms & Console / VB.NET в проекты Desktop / WinForms & Console / VB.NET, где мне пришлось преобразовывать файлы проектов и форм, которые содержали существенные различия, особенно файлы форм. 1033 *

На мой взгляд, вы, люди, должны светиться. Ничто из этого не имеет значения через десять минут.

2 голосов
/ 04 февраля 2016

В Visual Studio 2015 в меню Проект выберите Свойства , затем в Тип вывода измените раскрывающийся список с Приложение Windows на Консольное приложение .Построить решение.Готово.

...