如何为.NET Core控制台应用程序创建自包含的可执行文件?

3
我想为我的.NET Core控制台应用创建一个自包含可执行文件,该文件可以在命令行上运行而无需使用“dotnet”命令。当我尝试使用“dotnet publish -r osx-x64”创建自包含可执行文件时,输出文件夹中会创建一个带有项目名称的.dll,例如“myproject.dll”,而不是一个EXE文件(我假设在MacOS上,自包含应用程序与Windows一样是EXE文件)。我不能直接运行“myproject.dll”,必须使用“dotnet myproject.dll arg1”才能执行程序。

它正在创建带有自包含可执行文件的发布文件夹... 自包含不想要“单个文件”... 如果您的意思是单个文件,则可以使用/p:PublishSingleFile=true开关。 - Selvin
@Sinatr 谢谢,但是那个问题的答案有点太针对Windows了。我现在知道我做错了什么,并且可以执行自包含的可执行文件了。 - bit
@Selvin 自包含并不意味着单个文件,那么自包含在这里是指什么?那个开关不太清楚,你能给出完整的命令吗?更新:我现在明白自包含是指应用程序(即项目),而不是单个文件。 - bit
按照文档所述,它将在没有运行时安装的情况下工作。关于 switch,请将其添加到命令的末尾(请记住,在 Linux 和 OSX 上可执行文件没有扩展名)。 - Selvin
2个回答

4

补充@MyWrathAcademia的回答...

自包含应用程序不需要在目标系统上安装.NET运行时,因为它已经捆绑了自己的.NET运行时。而运行时相关的应用程序则依赖于目标系统上的.NET运行时,因此必须使用"dotnet run"来执行。

更多信息请参见此处


1
可执行文件位于发布文件夹中。在Windows系统中,可执行文件具有 .exe 文件扩展名,而在Linux和OSX(即MacOS)系统中,可执行文件没有文件扩展名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接