Ubuntu系统下的第一个console程序

时间:2023-03-09 06:31:15
Ubuntu系统下的第一个console程序

进入自己喜欢的目录,前面步骤和windows基本一致,只简单描述下

执行 dotnet new

Ubuntu系统下的第一个console程序

然后执行 dotnet restore

Ubuntu系统下的第一个console程序

然后执行 dotnet run

Ubuntu系统下的第一个console程序

第一次未编译,会自动编译,然后可以看到程序已经成功执行了。

编译后会生成bin的目录,具体内容如下

Ubuntu系统下的第一个console程序

可以看到在bin/Debug/dnxcore50/ubuntu.14.04-x64目录下生成可执行的helloworld文件,可以直接执行

Ubuntu系统下的第一个console程序

是不是帅呆了,比以前mono来的给力多了吧。不过精彩的还在后面。

手动编译

先删除刚才编译好的bin目录 rm -rf bin

执行命令 dotnet build --native 或者 简写的 dotnet build -n

Ubuntu系统下的第一个console程序

然后看看都输出了什么内容

ll -R bin

Ubuntu系统下的第一个console程序

注意到没有,在bin/Debug/dnxcore50/ubuntu.14.04-x64/下多了一个native的目录,里面只有一个helloworld的文件。

dotnet编译成了linux的native文件,不需要安装dotnet环境就可以执行。(没仔细研究,应该是将所需的环境都编译到了此文件中,可以看到一句hello world的文件大小就1M多了)

测试中将此文件copy到了另一个刚装好的centos7上,运行正常。

后续补充:
编译为linux的native以后,main方法的args参数会收到运行的命令
上例中用dotnet run运行时,args不会收到参数
在bin/Debug/dnxcore50/ubuntu.14.04-x64目录运行 ./helloworld,args也不会收到参数
但是到bin/Debug/dnxcore50/ubuntu.14.04-x64/native目录下运行 ./helloworld,args会收到参数
args[0]="./helloworld"
不知道这是不是个bug,以后会不会解决

这个问题发现的比较偶然,因为去玩了下core的sample,DotnetBot才发现的。

参考文档: