.Net Core跨平台应用研究-Ubuntu core下配置.net core运行时
<h1 align="left">引言</h1><p> 年初研究了一阵子.net core跨平台应用,先后发表了几篇应用研究的文章。因工作原因,忙于项目上线,有一阵子没来博客园写文章了。最近项目基本收尾,抽空翻了下自己的博客,寥寥几篇文章,真让人汗颜。</p>
<p> 近半年来,实施项目的是完全基于.net core进行开发,部署运行于ARM Cortx-A7芯片上的嵌入式Linux系统中,直接原生应用部署,是一个典型的跨平台开发应用。项目实施中,也积累了不少跨平台应用的心得,拟抽空将一些与项目业务无关的内容进行整理分享,以期对各位使用.net core平台开发的朋友能有一定的帮助。</p>
<h1 align="left">环境介绍</h1>
<p> 笔者实施的项目,是一个协议网关型的项目应用。</p>
<p> 硬件采用ARM Cortx-A7,512MB内存,8GB eMMC存储,10/100Mbps以太网,具有多个UART通讯接口和若干GPIO。</p>
<p> 系统环境为基于Linux4.14的ubuntu core(16.04),兼容Ubuntu系统软件源,集成了QT(笔者并没有用到),非常适合于企业用户用作产品的基础OS。</p>
<p> <img src="https://img2018.cnblogs.com/blog/1525067/201911/1525067-20191101001220385-1315670995.png" alt=""></p>
<h1 align="left">跨平台应用</h1>
<p> 笔者的项目,涉及到若干通讯接口和一定的硬件操作,应用了不少开源类类库:</p>
<p> flyfire.CustomSerialPort 笔者自行封装的开源跨平台类库</p>
<p> NModbus.SerialPortStream 支持跨平台的Modbus类库</p>
<p> MQTTnet 一个支持.net core的开源的MQTT类库</p>
<p> NodaTime 一个用于处理UTC时区的开源类库</p>
<p> ………</p>
<p> 以上类库,均可在windows系统和笔者所使用的ubuntu core(linux4.14)平台正常运行。</p>
<h1 align="left">部署.dotnet core运行时</h1>
<p> 啰嗦了半天,无非是介绍了一下笔者的跨平台应用的一些背景,还是回归本文主题,介绍一下如何在ubuntu core(非ubuntu桌面环境)环境下部署.dotnet core程序运行环境。</p>
<h1 align="left">更新软件源</h1>
<p align="left">sudo apt-get update</p>
<h1 align="left">安装库依赖</h1>
<p align="left">sudo apt-get install libcurl3</p>
<p align="left">sudo apt-get install libunwind8</p>
<p>根据微软官方文档介绍,需要安装相关依赖,实际使用中,不安装貌似并无影响呵。^_^</p>
<h1 align="left">下载或复制运行时压缩包</h1>
<p>下载的话,可能有的系统需要先执行如下安装</p>
<p>sudo apt-get install curl</p>
<p>下载32位版本</p>
<p align="left">curl -sSL https://download.visualstudio.microsoft.com/download/pr/428aaa32-f66c-4847-b845-aa21f90504e4/1cf033db866414997140c2672bd75069/dotnet-runtime-2.2.6-linux-arm.tar.gz -o dotnet-runtime-2.2.6-linux-arm.tar.gz</p>
<p> 下载64位版本</p>
<p>curl -sSL https://download.visualstudio.microsoft.com/download/pr/f5e04830-50fc-435c-8bb5-fcd4629da944/8aa7cce5c3fcb6a7db180b923d3574ef/dotnet-runtime-2.2.6-linux-arm64.tar.gz -o dotnet-runtime-2.2.6-linux-arm64.tar.gz</p>
<p> </p>
<p>根据需要,下载对应版本即可。笔者使用的运行时为2.2.6。</p>
<h1 align="left">解压安装</h1>
<p align="left">解压安装dotnet core运行时到指定目录(/~cli/dotnet)</p>
<p align="left">普通用户在运行时压缩包所在目录运行如下命令:</p>
<p align="left">sudo mkdir -p /~cli/dotnet && sudo tar zxf dotnet-runtime-2.2.6-linux-arm.tar.gz -C /~cli/dotnet</p>
<p align="left"> </p>
<p align="left">root用户运行如下命令:</p>
<p align="left">mkdir -p /~cli/dotnet && sudo tar zxf dotnet-runtime-2.2.6-linux-arm.tar.gz -C /~cli/dotnet</p>
<p align="left"> </p>
<p align="left">注:目录可以根据需要自定义,并无具体要求。</p>
<h1 align="left">创建程序快捷方式</h1>
<p align="left">ln -s /~cli/dotnet/dotnet /usr/local/bin</p>
<p align="left">按以上步骤,即完成了.net core运行时在ubuntu系统上的安装部署</p>
<p align="left">输入:dotnet –info 命令查看运行时信息,正常的话,结果如下图</p>
<p> <img src="https://img2018.cnblogs.com/blog/1525067/201911/1525067-20191101000901656-1022451161.png" alt=""></p>
<p> 如图,dotcore运行时已成功部署到了ubuntu core系统中。</p>
<h1 align="left">发布程序</h1>
<p>将dotnet core程序进行部署发布,笔者使用自己开源的HelloArm串口测试程序进行演示</p>
<p> <img src="https://img2018.cnblogs.com/blog/1525067/201911/1525067-20191101001328690-2142364462.png" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<p> <img src="https://img2018.cnblogs.com/blog/1525067/201911/1525067-20191101001358718-1934020898.png" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<p> 配置发布部署模式,这里使用的是框架依赖方式进行发布,适合在开发过程中,经常需要修改更新的项目。关于独立部署发布模式,在笔者的《.Net Core跨平台应用研究-HelloArm(串口篇)》中有所介绍,有兴趣的朋友可自行查阅。</p>
<p> </p>
<p> <img src="https://img2018.cnblogs.com/blog/1525067/201911/1525067-20191101001412090-1269209904.png" alt=""></p>
<p> </p>
<p> 最后,点击发布,将程序打包生成到bin\Release\netcoreapp2.2\publish\目录下。</p>
<p> 将发布的程序目录复制到目标平台</p>
<p> <img src="https://img2018.cnblogs.com/blog/1525067/201911/1525067-20191101001446691-2129851110.png" alt=""></p>
<p> </p>
<p> 赋予目标程序可执行权限(dotnet core的可执行文件为dll呵)</p>
<p> <img src="https://img2018.cnblogs.com/blog/1525067/201911/1525067-20191101001505779-1246649415.png" alt=""></p>
<p> 修正说明:通过dotnet core框架依赖方式发布运行,无需对被调用的dll文件提升可执行权限。</p>
<h1 align="left">运行程序测试</h1>
<p style="text-align: left" align="center"> <img src="https://img2018.cnblogs.com/blog/1525067/201911/1525067-20191101001532826-1478683607.png" alt=""></p>
<p> </p>
<p align="left"> 打完收工。</p>
<p id="ArticleLikeCode"> </p>
<p align="left"> </p><br><br>
来源:https://www.cnblogs.com/flyfire-cn/p/11774744.html
頁:
[1]