.NET6 命令行启动及发布单个Exe文件

.NET Core 命令行接口 (CLI) 工具是用于开发、生成、运行和发布 .NET Core 应用程序的跨平台工具链。

CLI 命令结构包含驱动程序(“dotnet”)和命令,还可能包含命令参数和选项。

话不多说,下面我们进入本章主题:

首先我们来建个MVC的项目(目标框架:.NET Core 3.1),如下所示:

进入项目文件.csproj所在的目录

输入cmd后按Enter键就可以快速进入到指定目录

dotnet run //.NET Core CLI命令 无需任何显式编译或启动命令即可运行源代码。

这样子就算是启动成功了,使用dotnet run命令启动默认端口号是launchSettings.json中设置的5000

我们使用5000端口在浏览器中访问看下是否真的启动成功了

可以看到确实是启动成功了

此时我们可以按Ctrl + C来停止程序,停止成功如下所示:

此时你如果不想使用5000端口,可以使用--urls命令参数来指定具体的端口,例如:

dotnet run --urls=http://*:8080

同样的操作可以多开几个命令行窗口,这样子就可以做到同一套代码,启动不同进程,监听不同端口,以此来模拟集群了,如下所示。

上面我们开了2个cmd界面,分别启动了一个实例,端口号分别为8080和8081,下面我们就可以使用这2个端口号访问了

可以发现我们用这2个端口号都访问成功了

此外还可以运行指定的项目

dotnet run -p NETCoreCLI.csproj //一个“-”是简称的p
dotnet run --project NETCoreCLI.csproj //两个“-”是全称的project

此处输入NETCoreCLI.csproj有个小技巧,就是输入一个N后按Tab键就会自动补齐,这样子就不用一个个字输入了。

PS:需要特别注意的是上面介绍的启动方式,一旦修改了程序代码则都需要使用Ctrl+C停止后重新启动。

当然有个小技巧就是加watch自动监听程序代码的修改,一旦修改了代码就会自动重启。

dotnet watch run -p NETCoreCLI.csproj --urls=http://*:8080

此外还有一个命令主要是用来启动发布后的应用,如下所示:

PS:使用该命令启动的方式,一旦修改了代码就需要停止,然后重新生成发布,最后重新启动。

dotnet [解决方案bin文件下的dll文件] --urls=http://*:8080

dotnet NETCoreCLI.dll --urls=http://*:8080

如果使用该命令直接启动没有发布的应用则可能有些资源文件就访问不到了,如下:

此时虽然可以启动成功但是有些资源访问不到,如下所示:

故该命令主要是用来启动发布后的应用,如下所示:

首先我们将项目发布下,点击项目 => 右键 => 选择发布

选择IIS、FTP等

选择文件系统

然后进行发布

最后使用命令启动发布后的应用

可以看到启动成功了

PS:

使用命令行方式启动程序同样也是可以支持附加到进程进行调试的。可以尝试将w3wp.exe或者dotnet.exe又或者是应用程序.exe附加到进程进行调试。

其中应用程序.exe如下所示:

本文涉及到的.NET Core CLI命令小结

dotnet run
dotnet run --urls=http://*:8080  //urls指定ip和端口
dotnet watch run  //watch监听程序修改,一旦修改则重新启动
dotnet watch run --urls=http://*:8080
dotnet run -p NETCoreCLI.csproj  //一个“-”是简称的p
dotnet run --project NETCoreCLI.csproj  //两个“-”是全称的project
dotnet watch run -p NETCoreCLI.csproj --urls=http://*:8080
dotnet [解决方案bin文件下的dll文件] --urls=http://*:8080
dotnet NETCoreCLI.dll --urls=http://*:8080
dotnet clean  //清除项目的默认生成,与VS中的右键清理效果是一样的
Ctrl + C  //停止
cls  //清除屏幕
Tab键  //自动补齐

详细的.NET Core CLI可参考官网:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-run

在.NET 6.0中发布单个Exe文件(PublishSingleFile)

假设我有一个简单的“ Hello World”控制台应用程序,我想发送给朋友来运行。朋友没有安装.NET Core,所以我知道我需要为他构建一个独立的应用程序。很简单,我只需在项目目录中运行以下命令:

dotnet publish -r win-x64 -c Release --self-contained

朋友是多少位的操作系统,你就标记要发布成什么样子的, --self-contained这个标签的解释自包含,就是说你的相关依赖项与你的应用程序不挂钩,将会产生依赖,缺少一个dll就会缺胳膊少腿。所以这样你就必须将整个文件夹都托给朋友。 

 看看文件夹里的情况,它会发生什么?293个文件,这直接将.NET Core的运行时也打包了,这非常Nice!不过我这文件真的很多,我很难受!朋友会说:这什么鬼?exe在哪里?

 所以.NET Core给我们提供了一个命令标志, dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true 您会注意到,我们不再指定自包含标志。这是因为假设如果您将其打包为单个exe,则将需要它的所有依赖关系。这一定说得通。我们试着去运行该命令。随后打开publish文件,我们发现!这也太干净了吧! 但是文件还是有点大呀,这可只是一个Hello World呀!,我们在思考如何进行优化大小,当然这一点微软也给我们考虑到了!!!

使用命令 dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true 我们拭目以待吧。

不通过DotCli发布可以修改一下项目文件,再通过VisualStudio发布!

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>//发布平台
    <PublishSingleFile>true</PublishSingleFile>//是否单个exe
  </PropertyGroup>
  <PropertyGroup>
    <PublishTrimmed>true</PublishTrimmed>//启用压缩
  </PropertyGroup>
</Project>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值