Avalonia项目打包安装包

avalonia,项目,打包,安装包 · 浏览次数 : 319

小编点评

**项目打包安装包命令:** ```dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=false /p:PublishReadyToRun=true /p:IncludeNativeLibrariesForSelfExtract=true ``` **命令解析:** * `-c Release` 指定发布配置为 Release 模式。 * `-r win-x64` 指定目标运行时为 Windows x64 平台。 * `--self-contained true` 启用了发布优化,删除未使用的依赖项和代码来减小应用程序的大小。 * `/p:PublishSingleFile=true` 设置发布输出为单个可执行文件,将应用程序和其依赖项打包成一个文件。 * `/p:PublishTrimmed=false` 禁用发布优化,保留所有依赖项和代码。 * `/p:PublishReadyToRun=true` 使用 ReadyToRun 编译器进行发布,可以提高应用程序的启动性能。 * `/p:PublishReadyToRunShowWarnings=true` 在使用 ReadyToRun 编译器进行发布时显示警告信息。 * `/p:IncludeNativeLibrariesForSelfExtract=true` 包含本机库以支持自解压功能,以便在运行时自动提取依赖项。 **其他说明:** * 该命令只发布 Windows 64 位安装包。 * 如果您在国产麒麟系统中运行程序,请确保您的操作系统已升级到最新版本。 * 如果您遇到任何问题,请查看项目的 GitHub 页面或联系开发人员。

正文

Avalonia项目打包安装包

要将 Avalonia 项目打包成安装包,你可以使用 Avalonia 发布工具来完成

1.创建一个发布配置文件

在你的 Avalonia 项目中,创建一个发布配置文件。在项目文件夹中创建一个名为 publish.xml 的文件,并添加以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Publish xmlns="https://github.com/avaloniaui">
  <Executables>
    <Executable Identifier="YourAppName"
                MainClass="YourAppName.Program"
                OutputName="YourAppName" />
  </Executables>
  <VersionInfo CompanyName="Your Company"
               Description="Your App Description"
               ProductName="Your App Name"
               AssemblyVersion="1.0.0"
               FileVersion="1.0.0" />
</Publish>

2.打开命令行工具,并导航到你的 Avalonia 项目的根目录。

image-20230721193402672

3.运行以下命令来发布项目:

dotnet publish -c Release -r win-x64 /p:PublishSingleFile=true /p:PublishTrimmed=true /p:PublishReadyToRun=true /p:PublishReadyToRunShowWarnings=true /p:UseAppHost=true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true /p:SelfContained=true --self-contained true

其中,-r 参数表示发布目标平台,win-x64 代表 Windows 64 位。你可以根据需要替换为其他平台。
dotnet publish:这是用于执行发布操作的 .NET CLI 命令。

  • dotnet publish:这是用于执行发布操作的 .NET CLI 命令。
  • -c Release:指定发布的配置为 Release 模式,这将优化应用程序的性能和大小。
  • -r win-x64:指定目标运行时为 Windows x64 平台,发布输出将为该平台准备。
  • /p:PublishSingleFile=true:设置发布输出为单个可执行文件,将应用程序和其依赖项打包为一个文件。
  • /p:PublishTrimmed=true:启用发布优化,删除未使用的依赖项和代码来减小应用程序的大小。
  • /p:PublishReadyToRun=true:使用 ReadyToRun 编译器进行发布,可以提高应用程序的启动性能。
  • /p:PublishReadyToRunShowWarnings=true:在使用 ReadyToRun 编译器进行发布时显示警告信息。
  • /p:IncludeNativeLibrariesForSelfExtract=true:包含本机库以支持自解压功能,以便在运行时自动提取依赖项。

image-20230721193517827

4.运行结果

image-20230721193601691

运行成功后,你可以在输出目录中找到发布的文件。默认情况下,它们位于 bin\Release\netcoreapp3.1\publish 目录中。

5.查看打包地址

image-20230721195517478

运行TerraMours.Chat.Ava.exe,即可启动程序。

6.报错分析

通过以上的命令生成的exe可以直接运行,但是我遇到了调用三方接口时的报错。如下:

image-20230724134152687

报错的内容如下:

System.NotSupportedException: Thedeserialization constructor for typeOpenAI.ObjectModels .RequestModels.ChatMessage' containsparameters with null names . This might happen because theparameter names have been trimmed by ILLink. Consider using the source generated serializer instead

1.分析原因

错误消息表明,在类型的反序列化构造函数中存在具有空名称的参数。这可能是因为参数名称被 ILLink(一个.NET工具链)剪裁导致的。ILLink通过剪裁未使用的代码和元数据来减小应用程序的大小,但它可能会在处理构造函数参数名称时出现问题。

2.修改命令

从错误中可以看出是少了数据,是打包时候被剪裁掉了,应该是/p:PublishTrimmed=true 启用了发布优化,删除未使用的依赖项和代码来减小应用程序的大小,那么我们优化下发布命令,删掉/p:PublishTrimmed=true ,优化后的命令如下:

dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=false /p:PublishReadyToRun=true /p:IncludeNativeLibrariesForSelfExtract=true

这样打包时就不会删除依赖项,新的打包成果,接口调用正常:

image-20230724134801869

3.生成程序对比

不过对应的程序大小会不同。下面是前后两次的打包的程序大小的对比

发布优化:

image-20230724135002791

不优化:

image-20230724135029367

程序大小的对比还是很明显的,/p:PublishTrimmed=true 会大大的优化程序大小。所以在程序发布时可以优先开启发布优化,如果遇到问题,再关闭,毕竟程序越小越好。

image-20230721195636763

7.项目介绍

本项目是基于Avalonia的智能AI会话项目。采用的是最新稳定版本11.0.0-rc1.1。希望通过该项目了解和学习Avalonia开发的朋友可以在我的github上拉取代码,同时希望大家多多点点star。

https://github.com/raokun/TerraMours.Chat.Ava

V1.0版本

下载地址:V1.0版本win64下载地址

目前可用的第一个版本
功能:

  • 最全的接口参数配置
  • 支持反向代理
  • 支持聊天记录的数据本地化存储
  • 支持填写SystemMessage

8.技术总结记录

目前打包只发布了Win64的安装包,后续测试linux安装包的发布。目的是在国产国产麒麟系统中运行本程序。

面目技术总结记录在我的博客中

基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架

基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发

Avalonia项目打包安装包

阅读如遇样式问题,请前往个人博客浏览: www.raokun.top

拥抱ChatGPT:https://ai.terramours.site

开源项目地址:https://github.com/raokun/TerraMours.Chat.Ava

与Avalonia项目打包安装包相似的内容:

Avalonia项目打包安装包

# Avalonia项目打包安装包 要将 Avalonia 项目打包成安装包,你可以使用 Avalonia 发布工具来完成 # 1.创建一个发布配置文件 在你的 Avalonia 项目中,创建一个发布配置文件。在项目文件夹中创建一个名为 `publish.xml` 的文件,并添加以下内容: ```x

Avalonia项目在OpenKylin运行踩坑

# Avalonia项目在OpenKylin运行踩坑 本篇博客记录OpenKylin开源操作系统中运行Avalonia项目遇到的各种问题,会一直更新,最新的内容请点击文末的链接跳转到我的[博客原文地址](https://www.raokun.top/archives/avalonia-xiang-m

Avalonia开发(二)项目结构解析

一、前言 在Avalonia开发(一)环境搭建 文章中介绍了Avalonia的介绍、开发环境的搭建、项目创建,以及项目FirstAvaloniaApp项目结构的介绍。本篇文章将介绍各平台的项目介绍。 二、Desktop项目结构 FirstAvaloniaApp.Desktop项目中默认生成的只有两个

创建Avalonia 模板项目-基础

# 创建Avalonia 模板项目-基础 Avalonia是一个跨平台的.NET框架,用于构建漂亮、现代的图形用户界面(GUI)。使用Avalonia,您可以从单个代码库创建适用于Windows、macOS、 Linux、iOS、Android和Web Assembly的原生应用程序。 本文部分内容

基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架

# 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架 ### Avalonia简介: Avalonia是.NET的一个跨平台UI框架,提供了一个灵活的样式系统,支持广泛的操作系统,如Windows、Linux、macOS,并对Android、iOS和WebAss

基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发

# 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发 ![image-20230718225201652](https://www.raokun.top/upload/2023/07/image-20230718225201652.png) **项目简介**:目

封装avalonia指定组件允许拖动的工具类

封装avalonia指定组件允许拖动的工具类 创建Avalonia的MVVM项目,命名DragDemo ,然后将项目的Nuget包更新到预览版

Avalonia 实现动态托盘

先下载一个gif图片,这里提供一个gif图片示例 在线GIF图片帧拆分工具 - UU在线工具 (uutool.cn) 使用这个网站将gif切成单张图片 创建一个Avalonia MVVM的项目,将图片copy进去 在项目文件中添加一下代码:

跨平台`ChatGpt` 客户端

跨平台ChatGpt 客户端 一款基于Avalonia实现的跨平台ChatGpt客户端 ,通过对接ChatGpt官方提供的ChatGpt 3.5模型实现聊天对话 实现创建ChatGpt的项目名称 ,项目类型是Avalonia MVVM , 添加项目需要使用的Nuget包

Avalonia中用FluentAvalonia+DialogHost.Avalonia实现界面弹窗和对话框

# Avalonia中用FluentAvalonia+DialogHost.Avalonia实现界面弹窗和对话框 本文是项目中关于 **`弹窗界面`** 设计的技术分享,通过 **`FluentAvalonia`+`DialogHost.Avalonia`** 开源nuget包来实现项目中需要 **