1. 相关依赖安装
- 全局安装打包工具
win+R 输入cmd 输入下面命令
dotnet tool install --global dotnet-deb
- 工程中安装相关打包依赖
项目目录下cmd,或者命令行定位到项目路径,不是解决方案命令
dotnet deb install
2. 打包前操作
- 项目路径创建desktop文件以及软件logo文件(png格式)
- 修改项目文件(.csproj)添加下方代码
<Content Include="DebDemoProject.png" CopyToPublishDirectory="PreserveNewest">
<LinuxPath>/usr/share/icons/DebDemoProject.png</LinuxPath>
</Content>
<Content Include="DebDemoProject.desktop" CopyToPublishDirectory="PreserveNewest">
<LinuxPath>/usr/share/applications/DebDemoProject.desktop</LinuxPath>
</Content>
这里面各个字段含义:Include
:图标文件的相对路径CopyToPublishDirectory
:图标文件复制方式:如果较新则复制LinuxPath
:安装包在Linux安装后,图标文件的路径
- desktop文件内容进行修改如下:
Exec与Icon里面的路径都是安装完deb包之后会自动生成的默认路径,Exec
的路径只可改动工程名字,
Icon
为图标文件所在位置,与解决方案里面的一样。
[Desktop Entry]
Name=TestSoftware
Name[zh_CN]=测试软件
Type=Application
Terminal=false
Categories=Applicaltion;
Exec=/usr/share/DebDemoProject/DebDemoProject %U
Icon=/usr/share/icons/DebDemoProject.png
comment[zh_CN]=测试软件
- 使用Notepad修改文件编码为UTF-8
- 右下角结尾改成LF,不要使用CRLF
- 项目Program文件添加linux系统的字体方案,防止因为字体不能运行,然后编译运行试一下。
public static AppBuilder BuildAvaloniaApp()
{
FontManagerOptions options = new();
if (OperatingSystem.IsLinux())
{
options.DefaultFamilyName = "Noto Sans CJK SC";
}
return AppBuilder.Configure<App>()
.UsePlatformDetect()
.LogToTrace()
.With(options);
}
3. 打包deb文件
- 还原工程 ,使用命令
dotnet restore -r linux-x64
- 进行打包,使用命令
dotnet msbuild DebDemoProject.csproj /t:CreateDeb /p:TargetFramework=net8.0 /p:RuntimeIdentifier=linux-x64 /p:Configuration=Release
根据自己的.Net版本填写
- 根据上面的提示路径下获取到deb包,然后拷贝到llinux系统下
4. Ubuntu系统下安装deb包
- 使用命令
sudo dpkg -i DebDemoProject.1.0.0.linux-x64.deb
- 安装完后/usr/share会有相应的项目包,desktop文件以及图标文件
- 系统一般自带这个字体,这个时候可以直接通过应用程序打开,
- 能运行不用看这个,由于我第一次下载了一个字体
fonts-noto-cjk
,并卸载了字体,删除了依赖,演示时候打开软件显示字体问题,我又重新装了这个字体可以运行了
- 如果上面的操作都没有问题,运行软件没有反应,应该是没有安装.net的原因,这里没有截图,不管应该会出现这样的问题
You must install .NET to run this application.
App: /usr/share/DebDemoProject/DebDemoProject Architecture: x64 App host version: 8.0.10 .NET location: Not found
Learn more: https://aka.ms/dotnet/app-launch-failed
Download the .NET runtime: https://aka.ms/dotnet-core-applaunch?missing_runtime=true&arch=x64&rid=linux-x64&os=ubuntu.18.04&apphost_version=8.0.10
这个原因是没有.Net运行时,因此运行不了软件,这个时候需要下载.Net8运行时,按照提示网页去下载。
- 下载.Net8SDK,因为.Net运行时没有Linux版本的,那我们就下载64位的SDK,SDK里面包含有桌面运行时,下载要大于上面提示的8.0.10版本的运行时,下载完毕后拷贝到Linux系统中。
- Ubuntu配置.net8的环境我是参考的这篇文章,具体步骤看他的即可,我是没有截图,就是一个解压文件的操作。下面介绍一下,
1、使用创建目录命令创建目录
sudo mkdir -p /home/sdk/net/dotnet
2、解压.net包到指定路径
sudo tar zxf dotnet-sdk-8.0.404-linux-x64.tar.gz -C /home/sdk/net/dotnet
3、修改系统环境变量,针对所有用户的环境变量配置文件在 /etc/profile ,使用Vim进行修改 sudo vim /etc/profile
,添加最后两行话,这两行话与官方文档里面稍微有些出入,但是不影响。
4、重启电脑或者执行命令source /etc/profile
5、查看.Net是否安装成功dotnet --version
6、安装成功的话可以去试一下软件能否运行
5. 注意
- desktop文件一定要打包成deb文件之前设置为utf-8编码,以及结尾改为LF,如果没改编码,Ubuntu系统安装完deb包之后,应用程序显示乱码,这个时候再通过命令修改编码以及结尾就不顶用了。
6. 引用
Avalonia UI程序打包为deb安装包_avalonia 如何在开发平台打包成det文件-优快云博客
Avalonia跨平台入门第三十五篇之制作安装包_avalonia 安装包-优快云博客
Ubantu配置net8.0环境_ubuntu 安装dotnet 8.0-优快云博客