作为单个文件发布的 .NET 6 WPF 应用程序不起作用

.NET 6 WPF Application published as single file does not work

提问人:daily_driver 提问时间:11/13/2023 更新时间:11/13/2023 访问量:81

问:

我有一个 .NET 6 WPF 应用程序。目前没有 dotnet 发布,只有 dotnet build。在输出中有许多 .dll 文件。我正在尝试最小化文件列表。

我正在尝试通过这样的东西发布:

dotnet publish -c Release --self-contained true --runtime win-x86 -p:PublishSingleFile=true --property WarningLevel=0

这是我最终得到的:

this is what I end up with

如果我尝试运行 .exe,我会看到徽标,然后它会崩溃。

事件查看器信息:

event viewer

不知道为什么它不起作用。

我做错了什么?我尝试使用不同的参数运行 dotnet publish,但无济于事。

此外,Erecipe 是一个单独的 .exe 文件,可在特定场景中运行。在我的情况下,是否有可能实现我想要的?

谢谢。

.NET WPF net-6.0 发布

评论

2赞 Hank 11/13/2023
错误堆栈中的魔术线是 。您是否正在执行任何类型的汇编扫描或反射以注册服务?有一项服务在常规 DLL 生成时注册的单个文件应用中注册at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
0赞 daily_driver 11/14/2023
您好,因此,经过一些调试后,我注释了在构建主机之前出现的所有 GetRequiredService 调用。它有效 这个特定的地方是罪魁祸首:我想我们可能做错了服务注册。而且看起来对于单个文件应用程序,可能必须以不同的方式完成。services.AddTransient<IDrugVerificationApi>(provider => provider.GetRequiredService<IOptions<VerificationOptions>>().Value.UseTestVerification ? provider.GetRequiredService<TestDrugVerificationApi>() : provider.GetRequiredService<DrugVerificationApi>());

答: 暂无答案