• .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个端口号都访问成功了

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

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

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

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

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

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

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

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

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

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

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

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

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

    选择IIS、FTP等

    选择文件系统

    然后进行发布

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

    可以看到启动成功了

    PS:

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

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

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

    1. dotnet run
    2. dotnet run --urls=http://*:8080 //urls指定ip和端口
    3. dotnet watch run //watch监听程序修改,一旦修改则重新启动
    4. dotnet watch run --urls=http://*:8080
    5. dotnet run -p NETCoreCLI.csproj //一个“-”是简称的p
    6. dotnet run --project NETCoreCLI.csproj //两个“-”是全称的project
    7. dotnet watch run -p NETCoreCLI.csproj --urls=http://*:8080
    8. dotnet [解决方案bin文件下的dll文件] --urls=http://*:8080
    9. dotnet NETCoreCLI.dll --urls=http://*:8080
    10. dotnet clean //清除项目的默认生成,与VS中的右键清理效果是一样的
    11. Ctrl + C //停止
    12. cls //清除屏幕
    13. 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发布!

    
    
      
        Exe
        netcoreapp3.0
        true
        win10-x64//发布平台
        true//是否单个exe
      
      
        true//启用压缩
      
    
  • 相关阅读:
    微服务系列之初探“微服务架构”
    如何选择适合企业的ERP管理系统
    中缀表达式转后缀表达式
    C# 自定义事件
    麒麟桌面系统CVE-2024-1086漏洞修复
    zlMediaKit 3 socket模块--怎么封装socket,怎么connect listen/bind write read
    【动态库和静态库】
    HC-SR04超声波模块测距原理与原理图
    8a V95技术白皮书——GBase8aMPPCluster 高级特性(1)
    【AGC】远程配置如何传入自定义属性
  • 原文地址:https://blog.csdn.net/hefeng_aspnet/article/details/126605231