Ubuntu系统下的第一个console程序
Posted draweye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu系统下的第一个console程序相关的知识,希望对你有一定的参考价值。
进入自己喜欢的目录,前面步骤和windows基本一致,只简单描述下
执行 dotnet new
然后执行 dotnet restore
然后执行 dotnet run
第一次未编译,会自动编译,然后可以看到程序已经成功执行了。
编译后会生成bin的目录,具体内容如下
可以看到在bin/Debug/dnxcore50/ubuntu.14.04-x64目录下生成可执行的helloworld文件,可以直接执行
是不是帅呆了,比以前mono来的给力多了吧。不过精彩的还在后面。
手动编译
先删除刚才编译好的bin目录 rm -rf bin
执行命令 dotnet build --native 或者 简写的 dotnet build -n
然后看看都输出了什么内容
ll -R bin
注意到没有,在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,以后会不会解决
参考文档:
以上是关于Ubuntu系统下的第一个console程序的主要内容,如果未能解决你的问题,请参考以下文章