首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单个文件发布不适用于WPF应用程序

单个文件发布不适用于WPF应用程序
EN

Stack Overflow用户
提问于 2020-08-28 20:00:22
回答 2查看 428关注 0票数 1

我有一个简单的WPF应用程序,我想发布为一个单一的exe文件。我调用以下命令:

代码语言:javascript
运行
复制
dotnet publish -r win-x64 -c Release -p:PublishSingleFile=true

最后,我得到了exepdb文件。当我尝试运行exe时,光标在几秒钟内变为“正在加载”状态,然后...就这样。应用程序不能运行。没有错误,只是启动不了。当我在不使用“单一文件”选项的情况下部署应用程序时,应用程序运行良好。

我使用的是.NET核心3.1.401

怎么啦?

//编辑

依赖关系遍历日志(我在x86中发布了应用程序,并使用了x86依赖关系遍历):

代码语言:javascript
运行
复制
Started "ADP.WPFUI.EXE" (process 0x40FC) at address 0x00860000 by thread 1.  Cannot hook module.
Loaded "NTDLL.DLL" at address 0x77C20000 by thread 1.  Cannot hook module.
Loaded "KERNEL32.DLL" at address 0x759C0000 by thread 1.  Cannot hook module.
Loaded "KERNELBASE.DLL" at address 0x75BC0000 by thread 1.  Cannot hook module.
DllMain(0x75BC0000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNELBASE.DLL" called by thread 1.
DllMain(0x75BC0000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNELBASE.DLL" returned 1 (0x1) by thread 1.
DllMain(0x759C0000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNEL32.DLL" called by thread 1.
DllMain(0x759C0000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNEL32.DLL" returned 1 (0x1) by thread 1.
Injected "DEPENDS.DLL" at address 0x08370000 by thread 1.
DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "DEPENDS.DLL" called by thread 1.
DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "DEPENDS.DLL" returned 1 (0x1) by thread 1.
Second chance exception 0xC0000005 (Access Violation) occurred at address 0x707AE0E0 by thread 1.
Exited "ADP.WPFUI.EXE" (process 0x40FC) with code -1073741819 (0xC0000005) by thread 1.
EN

回答 2

Stack Overflow用户

发布于 2021-06-21 10:37:24

我在".NET Core3.1“和".NET Core5.0”上都遇到了同样的问题。

首先,尝试在-r win-x64之前设置-c Release。我不知道为什么会这样,但这就是对我有效的方法。因此,对于您的示例代码,它需要是:

代码语言:javascript
运行
复制
dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true

代码隐藏中发生的事情也可能是问题的原因。对我来说,是事件处理程序接触到了标题栏中的按钮。

票数 0
EN

Stack Overflow用户

发布于 2021-09-27 07:32:30

问题是pdb文件没有打包到可执行文件中。

对于我来说,(在构建文件或发布配置文件中)包含下面这一行可以让它正常工作:

代码语言:javascript
运行
复制
<PropertyGroup>
    <IncludeSymbolsInSingleFile>true</IncludeSymbolsInSingleFile>
</PropertyGroup>

请参阅:https://github.com/dotnet/sdk/issues/10523#issuecomment-535619277

您可以在windows EventViewer中检查错误的来源。缺少pdb文件的错误如下所示:

代码语言:javascript
运行
复制
Description: A .NET Core application failed.
Application: program.exe
Path: C:\path\to\program.exe
Message: Error:
  An assembly specified in the application dependencies manifest (program.deps.json) was not found:
    package: 'Microsoft.Data.SqlClient.SNI.runtime', version: '2.0.1'
    path: 'runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.pdb'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63633392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档