.net-core - 为什么所有 .NET Core 应用程序都是控制台应用程序?

标签 .net-core

我有一个非常基本的问题,即为什么所有 .NET Core 应用程序都是控制台应用程序。我进行了一些谷歌搜索,但没有找到任何合适的答案。

最佳答案

这是一个有趣的问题,我来到这里是因为我有同样的想法:为什么我似乎总是在 asp.net 核心应用程序上看到一个控制台?它们现在都是控制台应用程序吗?

但这是海市蜃楼。当您看到控制台窗口时,这只是因为代码使用控制台进行输出。启动应用程序的代码控制输出的去向。例如,相反,输出可以移植到 Windows 事件日志,这是将站点发布到 IIS 时发生的情况。

如果您创建一个默认的 .netcore Web 应用程序,并且查看输出目录,您将看到两个文件:

你的项目.exe 你的项目.dll

如果您双击该 exe,它将启动该网站。您将看到控制台窗口出现,应用程序将开始监听端口 5000。

但现在重命名 YourProject.dll 并尝试运行 exe。它会失败,因为 exe 只是启动代码。您的网站实际上在 .dll 中。

重点是当您启动网络应用程序时看到的控制台窗口来自 exe,而不是 dll。因此控制台窗口与您的网络应用程序无关,它只是在开发环境中启动应用程序的一种便捷方式。您还可以使用 dotnet YourProject.dll 从命令行启动它,它的运行方式与从 YourProject.exe 启动它的运行方式完全相同

如果您阅读@HansPassant 的评论,他说的完全正确,我的回答只是对它的扩展。

关于.net-core - 为什么所有 .NET Core 应用程序都是控制台应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67671795/

相关文章:

asp.net-mvc - HttpContext.RequestAborted 和 CancellationToken 参数有什么区别?

c# - ASP.NET 5 (vNext) - 获取配置设置

.net - 在不同的框架上运行 .NET Standard 二进制文件

c# - 如何在 ASP Core 的静态类中使用 "IWebHostEnvironment"

c# - 将多个对象作为参数传递给 mvc 6 操作

.net - 使用 TFS 代理将生成服务器配置为具有 .NET Core 2.1 和 .NET Core 3.1

c# - JetBrains Rider - 配置应用程序设置覆盖

c# - ASP.NET Core API 如何在操作方法中将 ActionResult<T> 转换为 T

c# - 无法在 .NET Core 中编译 Environment.Exit

c# - 为什么 C# 在这种情况下使用相同的内存地址?