You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为含多入口点的WPF与ASP.NET Core应用实现侧载打包?

实现多进程应用的侧载打包与同时启动

是否支持多入口点?

Windows应用打包项目(MSIX)支持多入口点配置,也可以实现启动主进程时自动拉起辅助进程的需求,两种方案分别对应不同场景:


方案一:启动主进程时自动拉起后端API(适合前后端需同时运行的场景)

将WPF项目设为打包的主入口点,在WPF启动逻辑中主动启动后端API进程:

  1. 确保后端项目输出包含在打包包中
    在打包项目的引用中添加你的web项目,或者在打包项目的「文件」标签页手动添加后端项目输出目录下的web.exe及所有依赖文件(包括appsettings.json等配置文件)。

  2. 在WPF中添加启动后端的代码
    修改WPF项目的App.xaml.cs,在启动事件中启动后端进程:

    using System.Diagnostics;
    using System.IO;
    using System.Windows;
    
    namespace YourWpfAppNamespace
    {
        public partial class App : Application
        {
            private Process _backendProcess;
    
            protected override void OnStartup(StartupEventArgs e)
            {
                base.OnStartup(e);
    
                // 构建后端可执行文件路径(打包后路径与项目输出结构一致)
                string backendExePath = Path.Combine(AppContext.BaseDirectory, "web.exe");
                if (File.Exists(backendExePath))
                {
                    var startInfo = new ProcessStartInfo
                    {
                        FileName = backendExePath,
                        UseShellExecute = false,
                        CreateNoWindow = true // 可选:隐藏控制台窗口
                    };
                    _backendProcess = Process.Start(startInfo);
                }
            }
    
            protected override void OnExit(ExitEventArgs e)
            {
                // 关闭WPF时终止后端进程,避免残留
                _backendProcess?.Kill();
                base.OnExit(e);
            }
        }
    }
    
  3. 优化后端窗口显示(可选)
    如果不想显示后端控制台窗口,打开web项目的属性,将「输出类型」改为「Windows应用程序」,ASP.NET Core API会在后台运行,不会弹出控制台窗口。


方案二:配置多个独立入口点(适合用户可选择启动前端/后端的场景)

通过修改打包项目的Package.appxmanifest,添加多个入口点,安装后开始菜单会生成多个启动项:

  1. 打开打包项目的Package.appxmanifest,切换到「应用程序」标签页。
  2. 点击「添加」按钮,选择「现有项目」并选中你的web项目;或者手动填写入口点信息:
    • 显示名称:自定义名称(例如「Backend API服务」)
    • 入口点:Windows.FullTrustApplication
    • 可执行文件:web.exe(根据实际打包后的路径调整)
  3. 保存manifest后重新打包,安装后即可在开始菜单看到两个独立的启动图标,分别对应WPF前端和后端API。

注意事项

  • 打包时务必确认两个项目的所有依赖文件(如DLL、配置文件)都已包含在MSIX包中,否则运行时会出现找不到文件的错误。
  • 如果后端API需要绑定特定端口,确保端口未被占用,或在配置文件中设置动态端口。

内容的提问来源于stack exchange,提问作者Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:05:26