我有一个简单的WPF应用程序,我想发布为一个单一的exe文件。我调用以下命令:
dotnet publish -r win-x64 -c Release -p:PublishSingleFile=true
最后,我得到了exe
和pdb
文件。当我尝试运行exe
时,光标在几秒钟内变为“正在加载”状态,然后...就这样。应用程序不能运行。没有错误,只是启动不了。当我在不使用“单一文件”选项的情况下部署应用程序时,应用程序运行良好。
我使用的是.NET核心3.1.401
怎么啦?
//编辑
依赖关系遍历日志(我在x86中发布了应用程序,并使用了x86依赖关系遍历):
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.
发布于 2021-06-21 10:37:24
我在".NET Core3.1“和".NET Core5.0”上都遇到了同样的问题。
首先,尝试在-r win-x64
之前设置-c Release
。我不知道为什么会这样,但这就是对我有效的方法。因此,对于您的示例代码,它需要是:
dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true
代码隐藏中发生的事情也可能是问题的原因。对我来说,是事件处理程序接触到了标题栏中的按钮。
发布于 2021-09-27 07:32:30
问题是pdb文件没有打包到可执行文件中。
对于我来说,(在构建文件或发布配置文件中)包含下面这一行可以让它正常工作:
<PropertyGroup>
<IncludeSymbolsInSingleFile>true</IncludeSymbolsInSingleFile>
</PropertyGroup>
请参阅:https://github.com/dotnet/sdk/issues/10523#issuecomment-535619277
您可以在windows EventViewer中检查错误的来源。缺少pdb文件的错误如下所示:
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'
https://stackoverflow.com/questions/63633392
复制相似问题