2010-07-12 125 views
1

我在Visual Studio 2008中有一个项目。我想要有两种不同的运行方式 - 既可以作为常规的Windows应用程序(所以它会得到一个窗口,而我可以做图形的东西)或者作为一个控制台应用程序(这样它就没有窗口,也不会做图形)。有没有办法设置它,以便我可以使用命令行选项或某些东西来切换这两个选项时,我运行它?有没有办法在同一个Visual Studio项目中设置两个不同的配置,以便我可以构建其中一个?或者我需要创建两个完全独立的项目,一个用于窗口应用程序,一个用于控制台应用程序。在Visual Studio项目中创建“控制台”和“窗口”配置

回答

2

是的,您可以使用Configuration Manager创建新的配置。每个配置的项目设置可能不同。因此,您可以创建两个配置,并在项目设置中将输出类型设置为“Windows应用程序”或“控制台应用程序”。

这是如何操作的:在Build Type下拉菜单中(默认为Debug and Release选项),选择“Configuration Manager”。添加一个新配置并将其命名为“调试(控制台)” - 选择此新配置后,转至项目属性并将输出类型设置为控制台应用程序。重复添加Windows窗体配置。

0

就像您拥有默认的调试和发布配置一样,您可以创建自己的配置。 右键单击该项目,选择“配置管理器”,单击“活动解决方案配置”下拉框并选择“新建..”。输入“CmdLine Debug”和“Windowed Release”等名称,删除其他配置。现在右键单击项目,选择“属性”,然后调整适当配置所需的设置。

Tp让您的生活更轻松:将所有配置共有的属性放在属性表中,并将这些表放置在任何地方。这样,如果您想更改适用于所有配置的opion,则只需执行一次。

+0

不,不幸的是,它不会那样工作。输出类型,即创建控制台还是窗口应用程序是不受活动配置影响的项目设置。 – 2010-07-12 20:24:30

+0

呵呵?我以为properties-> linker-> system-> subsystem指定了这个? – stijn 2010-07-12 20:28:27

+0

对不起,因为没有编程语言,我假设.NET项目。对C++来说可能会有所不同,但是我怀疑它是什么,基本上是因为Windows应用程序必须具有WinMain和消息循环,而控制台应用程序则不需要。 – 2010-07-12 20:32:24

1

您可能需要考虑将项目拆分为三个。

  1. 一个程序集/ DLL(取决于你的语言),做的工作。
  2. 控制台应用程序。
  3. Windows应用程序。

后两个只是assembly/dll上完成所有工作的两个不同接口。

2

推荐的(非哈希)方法是将所有逻辑放在类库中,然后为控制台和窗口应用程序创建两个单独的项目。然后按照Chris的建议,将类库添加为这些项目的参考。

您不能拥有一个既可用作控制台窗口应用程序的单个应用程序。原因基本上是,控制台和窗口应用程序在PE标题中具有不同标志的二进制级别上不同。

虽然有一些黑客可以使用Windows API函数(AttachConsoleCreateConsole)来伪造这样的行为。有关详情请参阅

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

但要注意,有可能是行为规则的控制台或窗口应用certain differences

+0

+ 1 for CreateConsole&AttachConsole! – user353297 2010-07-12 20:59:02

相关问题