使用vs2022将.net8的应用程序发布为一个单独文件

在使用.NetCore3.1时,可以通过设置以下工程配置文本来将项目发布为一个单独的应用程序文件:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><UseWPF>true</UseWPF><PublishSingleFile>true</PublishSingleFile><RuntimeIdentifier>win-x86</RuntimeIdentifier><!--PublishTrimmed>true</PublishTrimmed--></PropertyGroup></Project>

1.如果直接将.NetCore3.1升级为.net8,发布时可能会弹出如:不再需要使用Microsoft.NET.Sdk.WindowsDesktop SDK。请考虑将根项目元素的Sdk届性更改为“Microsoft.NET.Sdk”的错误。

将工程配置项目修改为:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><UseWPF>true</UseWPF><PublishSingleFile>true</PublishSingleFile><RuntimeIdentifier>win-x86</RuntimeIdentifier><!--PublishTrimmed>true</PublishTrimmed--></PropertyGroup>
</Project>

2.发布为单个文件时的配置如下:
在这里插入图片描述
3.发布时,如弹出以下错误:无法复制文件“……\userProject\obj\Release\net8.0-windows\win-x86\singlefilehost.exe”,原因是找不到该文件。需要在userProject.csproj中添加如下元素:

<SelfContained>true</SelfContained>

4.此时生成的文件还不是最终的,同时生成的依赖还有vcruntime140_cor3.dll及wpfgfx_cor3.dll。若需要将这两个库依赖也包含进去,则还需要添加元素:

<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>

同时,生成的独立文件体积也成倍增加。

5.裁剪体积:

只添加:

<PublishTrimmed>true</PublishTrimmed>

发布生成时报:
“启用剪裁时,不支持或不推荐使用 WPF。请转到 https://aka.ms/dotnet-illink/wpf 以了解详细信息。”

解决:
添加:

<_SuppressWpfTrimError>true</_SuppressWpfTrimError>

再次调试时出运行时错误:

NotSupportedException: Built-in COM has been disabled via a feature switch. See https://aka.ms/dotnet-illink/com for more information.

解决:

添加:

<BuiltInComInteropSupport>true</BuiltInComInteropSupport>

调试可以正常了。发布后运行,却不能正常启动。

解决:

添加:

<TrimMode>partial</TrimMode>

6.最终如下:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><UseWPF>true</UseWPF><PublishSingleFile>true</PublishSingleFile><RuntimeIdentifier>win-x86</RuntimeIdentifier><SelfContained>true</SelfContained><PublishTrimmed>true</PublishTrimmed><_SuppressWpfTrimError>true</_SuppressWpfTrimError><BuiltInComInteropSupport>true</BuiltInComInteropSupport><TrimMode>partial</TrimMode></PropertyGroup>
</Project>

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

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

相关文章

Python open函数

在Python编程中&#xff0c;open()函数是一个重要的文件操作函数&#xff0c;用于打开文件并进行读取、写入、追加等操作。本文将深入探讨open()函数的用法、语法、文件模式、示例代码&#xff0c;并探讨其在实际编程中的应用场景。 什么是open()函数&#xff1f; open()函数…

机房及设备安全智慧监管AI+视频方案的设计和应用

一、背景分析 随着互联网的迅猛发展&#xff0c;机房及其配套设施的数量持续攀升&#xff0c;它们的运行状况对于企业运营效率和服务质量的影响日益显著。作为企业信息化的基石&#xff0c;机房的安全监测与管理的重要性不容忽视。它不仅关乎企业的稳定运营&#xff0c;同时也…

《WebKit技术内幕》学习之十五(3): Web前端之未来

3 Web应用和Web运行环境 3.1 Web应用 HTML5提供了强大的能力&#xff0c;而不是支持Web网页这么简单。就目前而言&#xff0c;它已经初步提供了支持Web网页向Web应用方向发展的能力。相对于本地应用&#xff08;Native Application&#xff09;&#xff0c;Web前端领域也能够…

Android Gradle Sync Task list is empty

问题 有时候 Android studio 打开项目&#xff0c;可能会遇到构建没有明显报错&#xff0c;但是 Gradle 却没有 Task list&#xff0c;或者 Task list 不完整只有零星几个配置项。连打包任务都没有&#xff0c;我怎么打包&#xff01; 异常情况&#xff1a; 正常情况&#xf…

IDEA jdk版本切换问题

打开 IntelliJ IDEA 的 Project Structure&#xff08;快捷键通常是 Ctrl Alt Shift S&#xff09;。 转到 Project Settings > Modules。 选择相应的模块&#xff0c;然后在 Sources 标签页下&#xff0c;查看 Language level 是否设置为 自己需要的jdk版本语言。 接…

Kotlin Multiplatform项目推荐 | 太空人分布图

Kotlin Multiplatform项目推荐 | 太空人分布图 项目简介 Kotlin Multiplatform项目是一种跨平台开发技术&#xff0c;它可以同时使用SwiftUI、Jetpack Compose、Compose for Wear OS、Compose for Desktop、Compose for Web、Kotlin/JS React等客户端框架&#xff0c;并且使…

C# 设置一个定时器函数

C#中&#xff0c;创建设置一个定时器&#xff0c;能够定时中断执行特定操作&#xff0c;可以用于发送心跳、正计时和倒计时等。 本文对C#的定时器简单封装一下&#xff0c;哎&#xff0c;以方便定时器的创建。 定义 using Timer System.Timers.Timer;class SetTimer {Timer …

【C++】list讲解及模拟

目录 list的基本介绍 list模拟实现 一.创建节点 二.迭代器 1.模版参数 2.迭代器的实现&#xff1a; a. ! b. c. -- d. *指针 e.&引用 整体iterator (与const复用)&#xff1a; 三.功能实现 1.模版参数 2.具体功能实现&#xff1a; 2.1 构造函数 2.2 begi…

antv/x6自定义节点+小地图+复制/删除节点+拖拽生成节点

1、 下载x6&#xff1a; npm i antv/x62.17.1 同步下载所需要用到的x6插件&#xff1a; "antv/x6-plugin-clipboard": "^2.0.0", // 如果使用剪切板功能&#xff0c;需要安装此包 "antv/x6-plugin-history": "^2.0.0", // 如果使用撤销…

链表--543. 二叉树的直径/medium 理解度C

543. 二叉树的直径 1、题目2、题目分析3、复杂度最优解代码示例4、适用场景 1、题目 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 …

Gitee开源项目issue模板怎么写

一&#xff0c;目录和配置结构 itee Issue 模板配置存储于仓库的默认分支下 .gitee/ISSUE_TEMPLATE 隐藏目录中。 以下是一个完整 Issue 模板配置和对应的目录结构参考&#xff1a; 注意 如果你在另一个分支中创建模板&#xff0c;配置将不会生效&#xff0c;相关的功能协作…

face_recognition和图像处理中left、top、right、bottom解释

face_recognition.face_locations 介绍 加载图像文件后直接调用face_recognition.face_locations(image)&#xff0c;能定位所有图像中识别出的人脸位置信息&#xff0c;返回值是列表形式&#xff0c;列表中每一行是一张人脸的位置信息&#xff0c;包括[top, right, bottom, l…