gpt4 book ai didi

c# - 以编程方式设置应用程序输出类型

转载 作者:行者123 更新时间:2023-11-30 19:19:50 25 4
gpt4 key购买 nike

我正在使用命令行应用程序输出类型编写应用程序以在控制台中显示调试信息,同时 MOGRE正在处理实际的窗口创建。我想在编译要发布的应用程序时隐藏控制台。通过进入项目属性、应用程序选项卡并将输出类型更改为 Windows 应用程序,可以轻松地不显示控制台。这样做时只有 MOGRE将显示窗口。

虽然我相信创建一个 Windows 应用程序并在需要该行为时为其附加一个控制台会更干净,但我仍然很好奇是否可以通过编程方式执行此操作。

也就是说,有没有办法以编程方式确定在 Debug模式下编译时应用程序编译为命令行应用程序,而在 Release模式下编译为 Windows 应用程序?如果是这样,如何做到?

编辑:我不是询问如何将控制台附加到 Windows 窗体应用程序。我将重要的部分用斜体表示,希望这样可以更清楚地说明我想要的内容。

最佳答案

如果您手动编辑 .csproj,您可以实现此目的:

  • 在解决方案资源管理器中右键单击项目节点
  • 选择“卸载项目”
  • 在解决方案资源管理器中右键单击项目节点
  • 选择“编辑 MyApp.csproj”

移动<OutputType ../>来自 <PropertyGroup .../> 的属性组 Xml 元素没有 Condition 的 Xml 元素到具有与构建配置/平台对应的条件的属性组。

之前:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
...
<OutputType>Exe</OutputType>
...
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
</PropertyGroup>

之后:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
...
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
<OutputType>Exe</OutputType>
...
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
<OutputType>WinExe</OutputType>
...
</PropertyGroup>

然后完成:

  • 在解决方案资源管理器中右键单击项目节点
  • 选择“重新加载项目”

这是一个证明示例:

class Program
{
public static void Main(string[] args)
{
#if DEBUG
Console.WriteLine("test");
#else
Application.Run(new Form1());
#endif
}
}

它有效,但我不认为这是官方支持的,所以使用风险自负:-)

关于c# - 以编程方式设置应用程序输出类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7827757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com