为什么在编译 .NET Core 控制台应用程序时我们最终会得到 dll 和 exe 文件?

Why when compiling .NET Core console application we end up with both dll and exe files?

我注意到在编译 .NET Core 控制台应用程序时,在 Windows 上创建了带有项目名称的 dll 和 exe 文件。这是为什么?在完整的 .Net 框架中,只会创建 exe 文件。

在 .Net Core 3.0 之前,只创建了 dll(尽管您仍然可以进行依赖于平台的单个文件构建)。在这些情况下,您必须使用命令 dotnet MyProject.dll 来启动您的程序。

在 .Net Core 3.0 中,他们添加了 exe,它实际上仍然只是上述命令的包装器。在其他操作系统上,它还会创建一个可执行文件,只是将其命名为 MyProject 而不是 MyProject.exe

如果人们有仍然使用 dotnet 命令的旧脚本,此设置不会破坏它们,但如果您只想使用 exe,您也可以这样做。