【问题标题】:Console.WriteLine in a console-less application works under Framework but not under Core无控制台应用程序中的 Console.WriteLine 在 Framework 下工作,但在 Core 下不工作
【发布时间】:2020-11-24 01:41:03
【问题描述】:

在 Visual Studio 2017 中,我们看到删除了 Visual Studio 托管进程。 据推测,这带来了 Console.WriteLine 的缺点,它不再适用于在没有附加控制台的情况下运行的应用程序(例如在 WPF 中)。

至少这是我的理解。 但令我惊讶的是,这似乎并不完全正确。

在 Visual Studio 2019 中创建一个 .NET Framework 4.8 WPF 项目,它似乎可以正常使用 Console.WriteLine(出乎意料),结果显示在 Visual Studio 输出窗口中。

同时,运行 .NET Core 的相同项目似乎没有向输出控制台打印任何内容(正如我所期望的那样,我可能会添加)。 在这两种情况下,项目都在输出类型设置为 Windows 应用程序的情况下运行,因此据我所知,没有附加控制台。

这是一个相当特殊的问题,因为我预计 Console.WriteLine 在这两种情况下都工作。 但似乎没有关于为什么这适用于 .NET Framework Wpf 应用程序的信息,以及为什么它可以在 Framework 下工作而不是在 Core 下工作的更多信息。

我自己通常使用 Debug.WriteLine 和 Trace.WriteLine,但想知道为什么 Console.WriteLine 仍然有效(即使在 Visual Studio 2019 中)即使它不应该有效。

【问题讨论】:

    标签: .net wpf visual-studio .net-core


    【解决方案1】:

    您可以使用System.Diagnostics下的Debug.WriteLine()在Output窗口中添加一些单词。Console.WriteLine does not output to Output Window in VS 2017中有一些解释。

    【讨论】:

    • 我知道并自己使用调试和跟踪,问题(大概是问 questianoble)是为什么即使删除了 Visual Studio 托管进程 Console.WriteLine 仍然适用于 .NET Framework 的 Visual Studio 2019 WPF 应用程序作为 Windows 应用程序运行。
    【解决方案2】:

    与旧的.Net 相比,net core 框架有很多变化。代码的移植不仅仅是剪切和粘贴,当您偏离最常用的路径时,您会发现行为上的细微差别。

    console.writeline 的标准输出在逻辑上是控制台窗口。看到 wpf 应用程序没有控制台窗口,可以说您在 .net old 中看到的行为是“错误的”。

    如果你特别想使用 console.writeline 而不是 debug.writeline 那么你可以给它一个控制台窗口来输出。

    在项目设置中将项目“输出类型”更改为控制台。 右键单击您的项目

    属性 > 应用程序选项卡 >

    将“输出类型”下的下拉菜单更改为控制台。 当你按下 f5 时,你会得到一个控制台窗口和主窗口。

    【讨论】:

    • 你能解释一下你对.net old的意思吗?只是框架的奇怪行为?我个人总是使用调试和跟踪,没想到控制台甚至可以工作,但它似乎可以工作(据我所知,这是不可能的)我很想知道它为什么工作在 wpf 项目中使用 .net 框架。
    • .Net 不是网络核心。 Console.writeline 一次在 wpf 中不起作用。我猜有人提出了错误报告,ms 的某个人认为工作轮次是合适的。找到那些人,你就会有明确的答案。
    猜你喜欢
    • 2017-06-14
    • 2020-07-09
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    相关资源
    最近更新 更多