Avalonia项目打包安装包

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Cursor Tool] 面向编程的ChatGPT工具的入门使用指南

文章目录 0. 面向编程的ChatGPT工具的入门使用指南1. Cursor的下载和安装2. Cursor的基本功能的使用2.0 什么是Prompt&#xff1f;为什么要学习Prompt&#xff1f; 2.1 关于Cursor的Chat模式2.2 关于Cursor的Edit模式 3 关于Cursor的项目级应用4 使用Cursor帮助我们从项目的设计…

数据分析 | 如何对年终销售数据进行可视化分析快速搞定统计图表

数据分析 | 如何对年终销售数据进行可视化分析&#xff0c;快速搞定统计图表 以下文章由&#xff1a;聂永真可视化设计实验室 整理、 等信息 年终将近&#xff0c;又到拿数据来做总结汇报时。作为销售部的管理者或是销售人员&#xff0c;你还在拿着一张零散的销售数据表给领导…

【第四周:数据可视化】7周成为数据分析师

本课程共七个章节&#xff0c;课程地址&#xff1a;7周成为数据分析师&#xff08;完结&#xff09;_哔哩哔哩_bilibili 数据分析思维业务知识Excel数据可视化SQL统计学Python 第四周&#xff1a;数据可视化&#xff08;P43-P60&#xff09; 数据可视化之美常见的初级图表常…

数据分析4——周报制作

先写数据相关的描述 比如业务、时间 拖拽时候从第二行开始拖拽才是带公式的&#xff0c;如果从第一个往下拖&#xff0c;不带公式&#xff0c;那当第一个被修改&#xff0c;下面的不会被改 星期也直接引用旁边的&#xff0c;调整单元格格式为星期 制作数据验证&#xff08;wps…

ChatGPT 之名称解释Model

ChatGPT 背后的大语言模型有上亿个参数&#xff0c;有趣的是&#xff0c;用来训练 chatGPT 的语料大致也包含这么多个记号&#xff0c;所以差不多“记住”一个记号需要一个参数&#xff0c;看不到什么数据压缩的效果。为了方便开发者使用&#xff0c;又将这些参数归类到5个模型…

chatgpt赋能python:如何在Python上写优化SEO文章

如何在Python上写优化SEO文章 当我们在Python上写文章时&#xff0c;我们通常需要考虑它在搜索引擎中的排名。因此&#xff0c;编写SEO&#xff08;搜索引擎优化&#xff09;友好的文章变得越来越重要。在本文中&#xff0c;我们将介绍如何在Python上编写优化SEO文章的关键技巧…

maltego 账户注册验证码 reCaptcha 问题

1. 问题详情 2.问题原因 这是因为 maltego 的官网使用的是 Google 的 reCaptcha 验证码服务&#xff0c;但是对于国内的用户来说并没有办法直接访问谷歌&#xff0c;所以就无法验证 reCaptcha 验证码了&#xff0c;所以相应的无论是 maltego 还是其他的网站&#xff0c;只要是使…

验证码Kaptcha

为什么需要验证码?kaptcha如何使用: 添加jar 在web.xml文件中注册KaptchaServlet&#xff0c;并设置验证码图片的相关属性 <servlet><servlet-name>KaptchaServlet</servlet-name><servlet-class>com.google.code.kaptcha.servlet.KaptchaServle…

captchaProducer验证码生成

1.pom.xml中导入架包 <dependency><groupId>com.google.code</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency> 2.web-mvc.xml添加验证码的主要配置&#xff0c;如颜色等 <!-- 验证码 --…

人机验证 之 验证码插件

一&#xff0c; vue-puzzle-vcode插件 1、安装vue-puzzle-vcode2&#xff0c;实现代码 3&#xff0c;效果图二&#xff0c; vue2-verify 三&#xff0c;vue-monoplasty-slide-verify 1&#xff0c;安装2&#xff0c;实现3&#xff0c;效果图一&#xff0c; vue-puzzle-vcode…

Hutool 验证码案例

Hutool 验证码案例 目录 Hutool 验证码案例项目结构所学jar包生成验证码业务逻辑登录业务逻辑登录页面login.html 项目结构 所学jar包 hutool、fastjson 生成验证码业务逻辑 package com.bjpowernode.code;import cn.hutool.captcha.CaptchaUtil; import cn.hutool.captcha.…

chatgpt赋能python:10年经验工程师教您如何免费使用Pycharm

10年经验工程师教您如何免费使用Pycharm 什么是Pycharm&#xff1f; Pycharm是一款由JetBrains公司开发的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;它是针对Python编程语言的开发环境&#xff0c;可以提供代码编译、调试、自动完成、版本控制等一系列强大的…

使用 AccountManager 实现系统内共享账号

前言 在开发过程中我们可能遇到自家应用间共享账号的场景。例如 APP1 登录成功后&#xff0c;启动 APP2 时自动完成登录并与 APP1 共享账号信息。 Android 为我们提供了AccountManager 来管理账号信息。 demo 地址 共享前提 两个 app 在一个用户组内使用相同的签名&#x…

切换用户账户访问共享文件夹

问题描述 如题&#xff0c;局域网内访问一台机器的共享文件时&#xff0c;第一次会弹提示框输入用户名和密码&#xff0c;再次访问这台机器的时候共享直接就打开了&#xff1b;如果想用另外一个帐号重新访问这个共享文件夹的话&#xff0c;该怎么办。 解决方案 凭据管理器&…

如何在打开共享时,能够切换用户登录?

问题&#xff1a; 今天在设置共享的时候遇到一个问题&#xff0c;一台windows的机器开了共享&#xff0c;在登录的时候会提示输入用户名和密码&#xff0c;我在输入密码的时候&#xff0c;顺便选择了记住密码【默认在不选择密码的时候&#xff0c;在下次登录时也是直接进去的】…

基于 CNN的年龄和性别检测

自2012年深度学习火起来后&#xff0c;AlexNet&#xff0c;vgg16&#xff0c;vgg19&#xff0c;gooGleNet&#xff0c;caffeNet&#xff0c;faster RCNN等&#xff0c;各种模型层出不群&#xff0c;颇有文艺复兴时的形态。 在各种顶会论文中&#xff0c;对年龄和性别的检测的论…

养育男孩 Boy

ISBN: 978-7-5472-5949-8 作者&#xff1a;闫晗 页数&#xff1a;245页 阅读时间&#xff1a;2021-07-31 推荐指数&#xff1a;★★★★☆ 在所有的动物中&#xff0c;男孩是最难控制和对付的。 男孩更擅长处理那些简单直接的情感&#xff0c;远不如小女孩细腻。 教会孩子通过…

【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28

链接&#xff1a;https://pan.baidu.com/s/18oE308_NVNPaCOACw_H5Hw?pwdabc1 利用爬虫抓取双色球开奖号码&#xff0c;获取完整数据&#xff0c;简洁45行代码实现&#xff0c;更新时间2023-06-28 这是网上的数据&#xff0c;怎么将它爬取下来 它将只爬取最近30期的双色球开…

微软154页论文刷屏:GPT-4能力接近人类!初版AGI就快来了...

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉】微信技术交流群 转载自&#xff1a;机器之心 GPT-4 的能力什么档次&#xff1f; 1956 年&#xff0c;在达特茅斯学院召开的一个研讨会上&#xff0c;人工智能这…

TCP传输文件

传输文件和传输信息的区别&#xff1a; 传输信息&#xff0c;只是一条数据&#xff0c;传输文件是多条数据传输信息传输过去一般都会显示&#xff0c;传输文件一般不会显示&#xff0c;一般只是存放在文件中传输文件需要传输&#xff0c;文件大小和文件名称&#xff08;不然不知…