让C#程序在linux环境运行

news2024/9/22 6:49:48

今晚花一些时间,总结net程序如何在linux环境运行的一些技术路线。

1、采用.Net Core框架

NET Core 使用了 .NET Core Runtime,它可以在 Windows、Linux 和 macOS 等多个操作系统上运行。可以采用Visual Studio生成Linux版本的dll。 在Linux系统中,需要安装dotnet的运行环境(sudo yum install dotnet-sdk-2.1)。最后通过dotnet  xx.dll即可运行程序。

2、采用Mono框架

Mono 是一个开源的跨平台实现的 .NET 框架,旨在让开发者能够在不同操作系统上使用 .NET 进行开发和运行应用程序。Mono 努力实现与 .NET Framework 的兼容性,使得许多基于 .NET 的应用能够迁移到 Mono 并正常运行。这包括支持大部分的 .NET API。Mono 包括一个运行时(称为 Mono Runtime)和一个C#编译器,使得开发者能够编写和执行 C# 和其他 .NET 语言编写的代码。

注意:Mono有自己的打包、执行方法。因此本文后面的内容跟Mono无关。

3、可执行程序类型

在Linux可运行的包括控制台应用、可执行程序、Asp.net web等。

需要注意如果希望在linux容器下运行,Asp.net web应用需要在Visual Studio勾选【启用Docker 支持】。

4、打包手法

这里的打包是最终交付到linux的环境。

1)dll、exe类。

该模式需要donet命令行进行启动。

2)基于dotnet-packaging插件

打包成linux环境下的deb格式。该模式可以直接双击打开。详见

dotnet-packagingicon-default.png?t=O83Ahttps://github.com/quamotion/dotnet-packaging

3)基于AppImage。

 AppImage 是一种用于在 Linux 上分发和运行应用程序的开放标准格式。它的设计目标是简化应用程序安装和发布的过程,使得开发者能够创建便于用户使用的便携式应用程序包。

5、用户界面

1)基于Avalonia: 

Avalonia 是一个开源的跨平台用户界面框架,主要用于构建桌面应用程序。它旨在使开发者能够使用类似于 WPF(Windows Presentation Foundation) 的 XAML(可扩展应用标记语言)来创建富有吸引力的用户界面,同时支持多个平台,包括 Windows、Linux 和 macOS。

2)基于GTKSystem:

C#桌面应用程序跨平台(windows、linux、macos)界面开发组件,基于GTK组件开发,该组件的核心优势是使用C#的原生winform表单控件窗体设计器,相同的属性方法,C#原生开发即可,无需学习。一次编译,跨平台运行。

类似的还有Eto.Forms、GTK。

3)基于CPF:

简洁、直观、强悍的netcore跨平台UI开发框架框架理念和WPF类似,但是没有Xaml,直接用CSS和C#代码描述。CPF .net跨平台UI框架 (cskin.net)

4)基于Uno Platform

Uno平台能够创建像素级完美的,只通过C#+XAML编写的应用程序,能够跨平台运行在Windows,iOS,安卓,macOS,Linux和Web上,Uno 平台是免费和开源的。

5)基于NET Maui

.NET Maui 是 Xamarin Forms 的下一个演变,允许真正的“编写一次;随处运行“体验。但.NET Maui 不支持Linux环境哦,支持Mac等。

6、采用兼容层WINE程序执行

Wine 是一个开源的兼容层,允许在类 UNIX 操作系统(如 Linux 和 macOS)上运行 Windows 应用程序。Wine 并不是模拟 Windows 操作系统,而是通过对 Windows API 的实现,使得 Windows 应用程序能够直接运行在 Linux 等平台上。

采用WINE可以直接执行net程序。当然也可能面临一些运行卡顿或者不能执行的情况。

  • Windows 专有组件和服务:如某些使用 .NET Framework、Windows Media Player、ActiveX 控件等特定 Windows 组件的程序在 Wine 中可能无法正常工作。
  • 依赖 COM 组件的程序:某些程序需要使用 Windows 的 COM(组件对象模型)服务,在 Wine 的支持可能不足。
  • CAD 软件:许多专业的 CAD 应用程序可能在图形表现和功能方面受限,不如在本地 Windows 环境中运行时表现好。
  • 3D 建模软件:虽然有些可能成功运行,但对高级图形的支持可能不足。

Wine还提供了一个名为WineTricks的工具。可以帮助用户解决运行Windows应用程序时遇到的一些常见问题。类似的,还有工具VirtualBox,VirtualBox提供全面的windows环境,但资源消耗更大。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2154486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

救生圈检测系统源码分享

救生圈检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

Python基础学习(3)

目录 一,函数 1,函数的定义 2,函数的参数 1,默认值 2,传参 3,返回值 4,变量的作用域 5,函数的调用 二,常用数据结构 1,列表 列表的定义 列表的特性…

机器学习的应用领域

机器学习在许多领域有广泛的应用,下面列出了一些主要的应用领域及其典型应用: 1. 图像识别 人脸识别:用于解锁手机、自动标记照片、监控安全系统。物体识别:应用于自动驾驶汽车、机器人、医疗影像分析中,帮助机器理解…

vue3 TagInput 实现

效果 要实现类似于下面这种效果 大致原理 其实是很简单的,我们可以利用 element-plus 组件库里的 el-tag 组件来实现 这里我们可以将其抽离成一个公共的组件,那么现在有一个问题就是通讯问题 这里我们可以利用父子组件之间的通讯,利用 v-model 来实现,父组件传值,子组…

蓝桥杯15届C/C++B组省赛题目

问题描述 小蓝组织了一场算法交流会议,总共有 5050 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 77 个人,这 77 人彼此之间没有进行握手 (但这 77 人与…

Unity数据持久化4——2进制

概述 基础知识 各类型数据转字节数据 文件操作相关 文件相关 文件流相关 文件夹相关 练习题 using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using UnityEngine;public class Exercises1 : MonoBehaviour {/…

金融科技与银行业的数字化转型

随着科技的迅猛发展,金融科技已经成为推动银行业数字化转型的重要力量。从移动支付到区块链,再到人工智能,这些新兴技术正逐渐改变银行的运作方式,不断提高银行的服务效率、提升客户体验,并推动整个金融生态系统的变革…

大数据-143 - ClickHouse 集群 SQL 超详细实践记录!

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

代码编辑器 —— Notepad++ 实用技巧

目 录 NotePad常用技巧一、查找二、标记三、插件四、自动补全 NotePad常用技巧 Notepad 的吉祥物是一只变色龙。它广泛应用于编程、网页开发、文本处理、脚本编写、文档编辑等领域。 一起看看它有哪些功能和特点: 1、对众多编程语言提供语法高亮显示 2、可折叠函数…

redis简单使用与安装

redis redis 是什么 Redis 是一个开源的,使用 C 语言编写的,支持网络交互的,内存中的Key-Value 数据结构存储系统,支持多种语言,它可以用作数据库、缓存和消息中间件。 一、存储系统特性 内存存储与持久化 Redis 主要将数据存储在内存中,这…

某省公共资源交易中心爬虫逆向分析

目标网站 aHR0cHM6Ly95Z3AuZ2R6d2Z3Lmdvdi5jbi8jLzQ0L3NjenQteHEvP3VzZXJJZD02NzM4OTg2MzkyNjA3NzAzMDQmcm93SWQ9NTI1MDYyMDI2ODg0NzE2NTQ0JnRpbWU9MjAwOC0xMS0yNiZjZXJ0aWZpY2F0ZU5vPTkxNDQwOTA0NjgyNDI2MzU4QyZjZXJ0aWZpY2F0ZVR5cGU9Mjg 一、抓包分析 请求头参数加密 二、…

【C语言-数据结构】单链表的定义

单链表的定义(实现) 比较顺序表和单链表的物理存储结构就能够清楚地发现二者的区别 用代码定义一个单链表 typedef struct LNode{ElemType data; //每个结点存放一个数据元素struct LNode* next; //指针指向下一个结点 }LNode, *LinkList;//要表示一个…

微信CRM系统适合什么企业?

CRM(客户关系管理)系统适合多种行业和企业,包括但不限于:传统制造业、互联网行业、电商行业、医疗行业、教育行业、交通运输行业、汽车行业、房地产行业、金融行业、银行 CRM的功能覆盖了与客户接触的各个阶段,包括售…

python --PyAibote自动化

官文: https://www.pyaibote.com/ 下载安卓集成环境: 可以看到开发的一些信息

【AI视频】AI虚拟主播制作网站推荐

一、什么是AI虚拟主播? AI虚拟主播是一种利用人工智能技术打造的虚拟主持人,也被称为数字虚拟主持人。它们通常是由人工智能技术和三维建模技术结合而成,可以在各种平台上进行主持工作,如新闻报道、电商直播、综艺娱乐等。 AI虚…

华润电力最新校招社招润择认知能力测评:逻辑推理数字计算语言理解高分攻略

​ 尊敬的求职者们, 在您准备加入华润电力这个大家庭之前,了解其招聘测评的详细流程和要求是至关重要的。以下是我们为您整理的测评系统核心内容,希望对您的求职之旅有所帮助。 测评系统概览 华润电力的招聘测评系统旨在全面评估求职者的认…

【全网最全】2024年华为杯研赛B题成品论文获取入口(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/hMgWngXvcQhttps://qm.qq.com/q/hMgWngXvcQ你是否在寻找数学建模比赛的突破点&a…

二叉树(二)深度遍历和广度遍历

一、层序遍历 广度优先搜索:使用队列,先进先出 模板: 1、定义返回的result和用于辅助的队列 2、队列初始化: root非空时进队 3、遍历整个队列:大循环while(!que.empty()) 记录每层的size以及装每层结果的变量&a…

Linux基础命令以及常识

镜像站点服务器(相当于下载的网址)也可叫软件源 vim /etc/apt/sources.list 索引文件(网络服务器在本地的缓存) 服务器软件源在本地列出来一个清单,以便于主机进行查询操作 cd /var/lib/apt/lists/ 下载软件包默认存放路径 cd /var/cache/a…

Linux_openEuler_24.03部署Oracle 19c部署安装实测验证(无图形桌面-RPM模式)

前言: 近期对openeuler有点兴趣,顺带在做个开发数据仓项目,那就正好安装个环境做个调测,做个记录放上来做个备录给到大家参考。 openEuler 24.03 LTS:四大升级, 首个AI原生开源操作系统正式发布 openEuler …