WPF .NET Core 3.1 发布自包含单个 exe 缺少 DLL

WPF .NET Core 3.1 published self contained single exe missing DLL

有一个 WPF .NET Core 3.1 应用程序,它在计算机上运行了一段时间,然后就停止打开了。查看事件查看器看到此错误:

Description: A .NET Core application failed. Application: MyApp.exe Path: C:\Folder\MayApp.exe Message: The application to execute does not exist: 'C:\Users\user\AppData\Local\Temp.net\MyApp[=10=]2t0akn.2dd\MyApp.dll'.

如果您删除该文件夹并重新启动该应用程序,它就可以正常工作。知道为什么吗?

应用程序已发布,.netcoreapp3.1,自包含,win-86,生成单个文件并准备好 运行

NET Core "single file" 机制很像旧的自解压 ZIP 可执行文件;它使分发变得更容易,但它仍然需要将所有依赖文件转储到某个地方才能 运行,并且看起来特定的临时文件夹可能会给您带来问题。

过程在Microsoft's documentation中描述:

Extraction Location

For a single-file app, the extraction directory is <base>/<app>/<bundle-id>

  • <base> is

    • DOTNET_BUNDLE_EXTRACT_BASE_DIR environment variable, if set.
    • If not, defaults to:
      • Windows: %TEMP%\.net
  • <app> is the name of the single-exe binary

  • <bundle-id> is a unique Bundle-identifier.

您可以尝试禁用单文件打包或调整环境变量以使用不太短暂的文件夹进行提取。