问题标签 [self-contained]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net-core - NET Core 6 自包含应用程序,在 Windows 启动时具有额外的探测路径崩溃
我有一个 .NET Core 6.0 自包含应用程序(不是单个文件部署)。
我的 app.runtimeconfig.json 配置文件包含以下设置:
这是因为我想将 dll 探测重定向到子文件夹以避免自包含应用程序在其根目录上生成的混乱。
这样我的根目录只包含这些文件:
- 应用程序
- 应用程序.dll
- app.runtimeconfig.json
- 应用程序.deps.json
- hostfxr.dll
- 主机策略.dll
所有运行时依赖项都在“lib”文件夹中。
使用这种配置,应用程序在任何情况下都能完美运行,但有一个非常相关的例外:如果我在 Windows 启动期间启动它,它会失败。
我认为这对于错误描述而言并不重要,但我使用 HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 中的注册表项启动程序。
我启用了 .NET 跟踪并比较了成功启动的跟踪(双击可执行文件)和不成功的跟踪(使用注册表项自动启动)。
这些是结果:
双击启动成功:
运行时配置 [D:\App\App.runtimeconfig.json] 有效=[1]
按照配置文件 [D:\App\App.runtimeconfig.json] 作为独立应用程序执行
自动运行启动失败:
运行时配置 [D:\App\App.runtimeconfig.json] 有效=[1]
忽略额外的探测路径库,因为它不存在。
根据配置文件 [D:\App\App.runtimeconfig.json] 作为独立应用程序执行
如您所见,如果应用程序在 Windows 启动期间运行,则运行时无法找到额外的探测路径。
这两个跟踪文件在此之前是相同的,然后,由于缺少额外的探测路径,导致在失败的尝试期间找不到所有运行时 dll 文件。
在 Windows 10 (x64) 上测试
c# - 将.exe作为单个文件发布到文件夹时如何减小它的大小
我有一个非常小的项目(WinForms,它包含 2 个文件夹和 10 个类,用于输入的简单窗口),我想将它作为单个 .exe 文件发布到文件夹。完成后文件大小为 140MB。当我添加“修剪未使用的程序集”标记时 - 90 MB。
如何添加减小此 .exe 文件的大小?我以前遇到过这样的事情,文件的大小约为 1 MB。
我的发布配置:
- 配置:调试 | 任何 CPU
- 目标框架:net5.0 windows
- 部署方式:自包含(产生单个文件)
- 目标运行时:win x-86