我正在使用 C# 和 XNA 4.0 开发游戏,我的项目的启动类型是控制台应用程序(帮助调试高级元素)。
我的问题有两部分:
- 是否可以从游戏代码中完全隐藏/禁用控制台窗口?
- 如果没有,是否可以从外部应用程序(游戏启动器)更改启动类型?
我知道显而易见的解决方案是将我的启动类型设置为公开版本的“Windows 应用程序”,并将其作为调试和开发人员版本的控制台,但是我希望用户能够打开控制台以获取调试数据如果他们有问题。
你真正需要的是像log4net或nlog这样的记录器
您可以通过 Nuget Visual Studio 扩展轻松安装它。
然后,您可以通过baretail 之类的查看器监视日志文件
Console.WriteLine() 上的正则表达式搜索和替换
此堆栈溢出答案似乎表明您可以通过进行一些本机调用来打开控制台窗口。
本质上,您可以将应用程序的启动类型设置为 windows 应用程序,然后调用AllocConsole将控制台注册到您的应用程序,它将 stdin、stdout 和 stderr 从进程重定向到控制台。
我仍然同意其他回答者的观点,某种日志框架会更有意义。如果您使用类似 log4net 的东西,您可以同时进行调试,在 log4net 配置中包含一个控制台附加程序,如果您将命令行参数传递给您的应用程序,则分配一个控制台。
对我来说听起来像是 X/Y 问题,我会在这里重新考虑您的要求以及您解决问题的方法,您是否真的希望用户在遇到问题时查看命令提示符。
我会考虑编写一个调试类来为您处理所有这些并将其添加到您的主游戏循环中,以便它可以在需要时绘制到屏幕上