2010-07-12 1 views
1

У меня есть проект в Visual Studio 2008. Я хочу иметь два разных способа его запуска: либо в качестве обычного приложения Windows (поэтому он получает окно и я может делать графические материалы) или как консольное приложение (так, чтобы оно не имело окна и не выполняло графику). Есть ли способ настроить его, чтобы я мог использовать параметр командной строки или что-то, чтобы переключаться между этими двумя параметрами, когда я запускаю его? Есть ли способ настроить две разные конфигурации в одной и той же Visual Studio proejct, чтобы я мог построить один из них? Или мне нужно создать два полностью отдельных проекта: один для оконного приложения и один для консольного приложения.Создать «консольные» и «оконные» конфигурации в проекте Visual Studio

ответ

2

Да, вы можете использовать Configuration Manager для создания новых конфигураций. Параметры проекта могут быть (есть) разными для каждой конфигурации. Таким образом, вы можете создать две конфигурации, а в настройках проекта установить тип вывода «Приложение Windows» или «Консольное приложение».

Вот как вы это делаете: в раскрывающемся списке «Тип сборки» (тот, который по умолчанию имеет параметры отладки и выпуска), выберите «Configuration Manager». Добавьте новую конфигурацию и назовите ее «Debug (Console)» - при выбранной новой конфигурации перейдите к свойствам проекта и установите тип вывода в консольное приложение. Повторите, чтобы добавить конфигурацию Windows Forms.

0

так же, как у вас есть конфигурации Debug и Release по умолчанию, вы можете создать свой собственный. Щелкните правой кнопкой мыши проект, выберите «Диспетчер конфигурации», выберите раскрывающийся список «Конфигурация активного решения» и выберите «Создать ..». Введите такие имена, как «CmdLine Debug» и «Windowed Release» и т. Д., Удалите другие конфигурации. Теперь щелкните правой кнопкой мыши проект, выберите «Свойства» и отрегулируйте необходимые параметры для соответствующей конфигурации.

Tp, чтобы сделать вашу жизнь проще: поместите свойства, общие для всех конфигураций в листах свойств, и используйте эти листы повсюду. Таким образом, если вы хотите изменить опцию, применимую ко всем конфигурациям, вам нужно будет сделать это только один раз.

+0

Нет, к сожалению, это не работает. Тип вывода, т. Е. Создается ли приложение «Консоль» или «Окно», - это параметр проекта, на который не влияет активная конфигурация. –

+0

ха? Я думал, что свойство-> linker-> system-> subsystem указывает это? – stijn

+0

Извините, так как языка программирования не было, я принимал проекты .NET. Это может быть иначе для C++, но я сомневаюсь, что это связано с тем, что приложение Windows должно иметь WinMain и цикл сообщений, тогда как консольное приложение этого не делает. –

1

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

  1. Сборка/dll (в зависимости от вашего языка), который выполняет работу.
  2. Консольное приложение.
  3. Приложение Windows.

Последние два являются двумя различными интерфейсами на сборке/dll, которые выполняют всю работу.

2

Рекомендованный (не хакерский) способ сделать это - разместить всю вашу логику в библиотеке классов, а затем создать два отдельных проекта для консоли и приложения Window. Затем добавьте библиотеку классов в качестве ссылки на эти проекты, как это предложил Крис.

У вас не может быть ни одного приложения, которое действует как консоль и приложение Window. Причина в основном заключается в том, что приложение Console and Window отличается на двоичном уровне разными флагами в заголовке PE.

Есть некоторые хаки, которые позволяют вам подделывать такое поведение с помощью функций Windows API (AttachConsole и CreateConsole).Более подробную информацию см

C#: Is it possible to have a single application behave as Console or Windows application depending on switches?

Но знайте, что там может быть в поведении регулярных консольного приложения или окна certain differences.

+0

+ 1 для CreateConsole & AttachConsole! – user353297

Смежные вопросы