如何为含多入口点的WPF与ASP.NET Core应用实现侧载打包?
实现多进程应用的侧载打包与同时启动
是否支持多入口点?
Windows应用打包项目(MSIX)支持多入口点配置,也可以实现启动主进程时自动拉起辅助进程的需求,两种方案分别对应不同场景:
方案一:启动主进程时自动拉起后端API(适合前后端需同时运行的场景)
将WPF项目设为打包的主入口点,在WPF启动逻辑中主动启动后端API进程:
确保后端项目输出包含在打包包中
在打包项目的引用中添加你的web项目,或者在打包项目的「文件」标签页手动添加后端项目输出目录下的web.exe及所有依赖文件(包括appsettings.json等配置文件)。在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); } } }优化后端窗口显示(可选)
如果不想显示后端控制台窗口,打开web项目的属性,将「输出类型」改为「Windows应用程序」,ASP.NET Core API会在后台运行,不会弹出控制台窗口。
方案二:配置多个独立入口点(适合用户可选择启动前端/后端的场景)
通过修改打包项目的Package.appxmanifest,添加多个入口点,安装后开始菜单会生成多个启动项:
- 打开打包项目的
Package.appxmanifest,切换到「应用程序」标签页。 - 点击「添加」按钮,选择「现有项目」并选中你的
web项目;或者手动填写入口点信息:- 显示名称:自定义名称(例如「Backend API服务」)
- 入口点:
Windows.FullTrustApplication - 可执行文件:
web.exe(根据实际打包后的路径调整)
- 保存manifest后重新打包,安装后即可在开始菜单看到两个独立的启动图标,分别对应WPF前端和后端API。
注意事项
- 打包时务必确认两个项目的所有依赖文件(如DLL、配置文件)都已包含在MSIX包中,否则运行时会出现找不到文件的错误。
- 如果后端API需要绑定特定端口,确保端口未被占用,或在配置文件中设置动态端口。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

