引言

年初研究了一阵子.net core跨平台应用,先后发表了几篇应用研究的文章。因工作原因,忙于项目上线,有一阵子没来博客园写文章了。最近项目基本收尾,抽空翻了下自己的博客,廖廖几篇文章,真让人汗颜。

近半年来,实施项目的是完全基于.net core进行开发,部署运行于ARM Cortx-A7芯片上的嵌入式Linux系统中,直接原生应用部署,是一个典型的跨平台开发应用。项目实施中,也积累了不少跨平台应用的心得,拟抽空将一些与项目业务无关的内容进行整理分享,以期对各位使用.net core平台开发的朋友能有一定的帮助。

环境介绍

笔者实施的项目,是一个协议网关型的项目应用。

硬件采用ARM Cortx-A7,512MB内存,8GB eMMC存储,10/100Mbps以太网,具有多个UART通讯接口和若干GPIO。

系统环境为基于Linux4.14的ubuntu core(16.04),兼容Ubuntu系统软件源,集成了QT(笔者并没有用到),非常适合于企业用户用作产品的基础OS。

跨平台应用

笔者的项目,涉及到若干通讯接口和一定的硬件操作,应用了不少开源类类库:

flyfire.CustomSerialPort          笔者自行封装的开源跨平台类库

NModbus.SerialPortStream   支持跨平台的Modbus类库

MQTTnet                                 一个支持.net core的开源的MQTT类库

NodaTime                                一个用于处理UTC时区的开源类库

………

以上类库,均可在windows系统和笔者所使用的ubuntu core(linux4.14)平台正常运行。

部署.dotnet core运行时

啰嗦了半天,无非是介绍了一下笔者的跨平台应用的一些背景,还是回归本文主题,介绍一下如何在ubuntu core(非ubuntu桌面环境)环境下部署.dotnet core程序运行环境。

更新软件源

sudo apt-get update

安装库依赖

sudo apt-get install libcurl3

sudo apt-get install libunwind8

根据微软官方文档介绍,需要安装相关依赖,实际使用中,不安装貌似并无影响呵。^_^

下载或复制运行时压缩包

下载的话,可能有的系统需要先执行如下安装

sudo apt-get install curl

下载32位版本

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

下载64位版本

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

根据需要,下载对应版本即可。笔者使用的运行时为2.2.6。

解压安装

解压安装dotnet core运行时到指定目录(/~cli/dotnet)

普通用户在运行时所在压缩包目录运行如下命令:

sudo mkdir -p /~cli/dotnet && sudo tar zxf dotnet-runtime-2.2.6-linux-arm.tar.gz -C /~cli/dotnet

root用户运行如下命令:

mkdir -p /~cli/dotnet && sudo tar zxf dotnet-runtime-2.2.6-linux-arm.tar.gz -C /~cli/dotnet

注:目录可以根据需要自定义,并无具体要求。

创建程序快捷方式

ln -s /~cli/dotnet/dotnet /usr/local/bin

按以上步骤,即完成了.net core运行时在ubuntu系统上的安装部署

输入:dotnet –info 命令查看运行时信息,正常的话,结果如下图

如图,dotcore运行时已成功部署到了ubuntu core系统中。

发布程序

将dotnet core程序进行部署发布,笔者使用自己开源的HelloArm串口测试程序进行演示

配置发布部署模式,这里使用的是框架依赖方式进行发布,适合在开发过程中,经常需要修改更新的项目,关于独立部署发布模式,在笔者的《.Net Core跨平台应用研究-HelloArm(串口篇)》中有所介绍,有兴趣的朋友可自行查阅。

最后,点击发布,将程序打包生成到bin\Release\netcoreapp2.2\publish\目录下。

将发布的程序目录复制到目标平台

赋予目标程序可执行权限(dotnet core的框架仪表可执行文件为dll呵)

运行程序测试

打完收工。

.net core跨平台应用研究-ubuntu core下配置.net core运行时的更多相关文章

  1. 在Ubuntu环境下配置NIMH MEG Core Facility之CTF Tools

    在Ubuntu环境下配置NIMH MEG Core Facility之CTF Tools 网站有提示: The install script won't work, but you can copy ...

  2. .Net Core跨平台应用研究-HelloDDNS(动态域名篇)

    .Net Core跨平台应用研究-HelloDDNS -玩转DDNS 摘要 为解决自己搭建的内网服务器需要域名而因没有超级用户密码不能开启光猫内置DDNS功能的问题,自己动手,基于.net core, ...

  3. .Net Core跨平台应用研究-CustomSerialPort(增强型跨平台串口类库)

    .Net Core跨平台应用研究-CustomSerialPort -增强型跨平台串口类库 摘要 在使用SerialPort进行串口协议解析过程中,经常遇到接收单帧协议数据串口接收事件多次触发,协议解 ...

  4. Ubuntu Nginx下配置网站ssl实现https访问

    最近在看  HTTP权威指南   看到介绍了HTTPS的ssl,自己就动手测试了下,将步骤记录下 HTTPS简介 什么是HTTPS?百科是这样解释的.HTTPS(全称:Hyper Text Trans ...

  5. Ubuntu环境下配置GCC

    Ubuntu网络环境下安装GCC及其头文件步骤: 1.Ubuntu环境下配置GCC 刚装好的GCC什么都不能编译,因为没有一些必须的头文件,所以要安装build-essential,安装了这个包会安装 ...

  6. ubuntu 18 下配置 WebStorm 编译 sass

    ubuntu 18 下配置 WebStorm 编译 scss 标签(空格分隔): IDE 安装Ruby: sudo apt-get install ruby ruby -v ruby 2.5.1p57 ...

  7. Ubuntu环境下配置Android Studio【转】

    本文转载自:https://www.jianshu.com/p/1f6295f9c955 之前学习Android开发的时候,一直跟各种教程一样,使用的是Eclipse+ADT,主要是比较方便,容易上手 ...

  8. 在Linux Mint13下编译安装mono运行时

    最近一直想体验下mono在web开发上到底进展到什么程度,挑战一下它对web开发的极限.因为asp.net mvc本身依赖windows平台的东西不太多,所以这些assembly移植到mono/lin ...

  9. .Net Core跨平台应用研究-HelloArm(串口篇)

    引言 为了验证采用dotnet core技术开发的物联网设备数据采集接入服务应用是否能在高性价比的linux嵌入式平台运行,针对dotnet core应用程序进行嵌入式linux环境的发布部署运行验证 ...

随机推荐

  1. 了解一下Java SPI的原理

    了解一下Java SPI的原理 1 为什么写这篇文章? 近期,本人在学习dubbo相关的知识,但是在dubbo官网中有提到Java的 SPI,这个名词之前未接触过,所以就去看了看,感觉还是有很多地方有 ...

  2. Windows上部署MySql

    下载安装包 最新版本可以在 MySQL 下载中下载. 下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 D:\Program Files\Java\mysql-8.0.16-w ...

  3. WPF 将字体文件 添加到 资源文件,并在后台代码使用

    先看结果 1.将字体文件,导入到资源文件,如: 添加后,自动生成 2.在窗体xaml中添加如: 3.在xaml窗体对应的cs文件中,为TextBlock指定字段 创建一个字段对象,并指定字体文件的所在 ...

  4. 【django】ajax,上传文件,图片预览

    1.ajax 概述: AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...

  5. XLNet预训练模型,看这篇就够了!(代码实现)

    1. 什么是XLNet XLNet 是一个类似 BERT 的模型,而不是完全不同的模型.总之,XLNet是一种通用的自回归预训练方法.它是CMU和Google Brain团队在2019年6月份发布的模 ...

  6. python教程 - 猿说python

    一.简介         知识改变命运,程序改变世界.互联网时代潜移默化的改变着我们的生活,伴随技术的进步,我想下一个时代应该属于人工智能和机器学习,属于python.           pytho ...

  7. 聚类算法之K-means

    想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满 ...

  8. 主动降噪技术(ANC)的前生今世–行业分析

    一 原始玩家 1978年,创始人Amar G. Bose博士在从欧洲飞往波士顿的飞机上,发现飞机引擎的噪音扫净了他戴耳机欣赏音乐的兴致.这激发了他在BOSE公司进行一项消噪科技的研究.弹指之间,十年过 ...

  9. Redis开发与运维:linux安装

    Linux 安装 我的系统是inux 系统,官网下载 https://redis.io/download redis-5.0.5.tar.gz 解压: 编译安装: 官网和文档说得已经很清楚了,现在就执 ...

  10. GIT原理介绍

    Git 是一套内容寻址文件系统.很不错.不过这是什么意思呢? 这种说法的意思是,Git 从核心上来看不过是简单地存储键值对(key-value).它允许插入任意类型的内容,并会返回一个键值,通过该键值 ...