当前位置: 首页 > news >正文

使用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.lryc.cn/news/290535.html

相关文章:

  • 面试经典150题(93-95)
  • flask 实现token生成以及携带token请求接口
  • docker-compose部署单机ES+Kibana
  • gitee仓库项目迁移到gitlab仓库
  • 安装elasticsearch、kibana、IK分词器
  • 海外云手机运营Instagram攻略
  • 【lesson25】学习MySQL事务前的基础知识
  • SkyWalking+es部署与使用
  • js获取html中的img标签,图片标签,提取src属性并替换操作
  • 【力扣经典面试题】27. 移除元素
  • MicrosoftEdge浏览器打开网页出现“此网站被人举报不安全”问题时解决办法
  • 【PyCharm教程】PyCharm 安装、卸载和升级包
  • 蓝桥杯-常用STL(一)
  • SQL查询数据库环境(dm8达梦数据库)
  • DolphinScheduler + Amazon EMR Serverless 的集成实践
  • 【服务器APP】利用HBuilder X把网页打包成APP
  • vue3 组合式API获取子组件的属性和方法
  • [数据结构+算法] 给一棵树和一个sum,判断是否存在从root到叶子结点的path之和等于sum?
  • 非阿里云注册域名如何在云解析DNS设置解析?
  • 微服务-微服务Alibaba-Nacos注册中心实现
  • 多符号表达式的共同子表达式提取教程
  • Java 反射获取属性名、属性类型、属性值、判断属性类型
  • Docker私有仓库搭建
  • C语言第十三弹---VS使用调试技巧
  • AST反混淆实战-jsjiamiv7最高配置
  • colorThief+vite+react使用方法
  • Hive(15)中使用sum() over()实现累积求和和滑动求和
  • 2024年Java搭建面试题
  • 二维数组的学习
  • Java集合(List集合)