.net core 为什么在编译.NET核心控制台应用程序时,我们会同时使用dll和exe文件?

.net core 为什么在编译.NET核心控制台应用程序时,我们会同时使用dll和exe文件?,.net-core,console-application,.net Core,Console Application,我注意到,在编译.NET核心控制台应用程序时,在Windows上创建了带有项目名称的dll和exe文件。为什么呢?在完整的.Net framework中,只会创建exe文件。在.Net Core 3.0之前,只创建了dll(尽管您仍然可以进行依赖于平台的单个文件构建)。在这些情况下,您必须使用命令dotnetmyproject.dll启动程序 在.NETCore3.0中,他们添加了exe,它实际上仍然只是上述命令的包装器。在其他操作系统上,它也会创建一个可执行文件,它只是将其命名为MyProje

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

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

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


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

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

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


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

官方文档中是否有描述这种行为的地方?@mark我想这可能就是您想要的,也许您可以回答?@mark for.net core您可以将所有包元数据放在csproj文件中,而不是创建单独的nuspec文件。然后可以使用dotnetpack命令生成包。此外,还可以将csproj中的属性设置为Library。这将删除exe。最后,您可能不需要将netcoreappx.y作为nuget包的目标。实际上,以netstandard2.0或netstandard2.1为目标更好,因为这样您的包就可以与任何兼容的框架一起工作。官方文档中是否有描述这种行为的地方?@mark我想这可能就是您想要的,也许您可以回答?@mark for.net core您可以将所有包元数据放在csproj文件中,而不是创建单独的nuspec文件。然后可以使用dotnetpack命令生成包。此外,还可以将csproj中的属性设置为Library。这将删除exe。最后,您可能不需要将netcoreappx.y作为nuget包的目标。实际上,以netstandard2.0或netstandard2.1为目标更好,因为这样您的包就可以与任何兼容的框架一起工作。