【问题标题】:Packaging WPF App with several entry points使用多个入口点打包 WPF 应用程序
【发布时间】:2022-09-27 23:18:41
【问题描述】:

我用 c# 开发了一个应用程序。该解决方案包含几个项目,其中:

  • 前端的一个wpf项目
  • 一个名为 \"web\" 的控制台应用程序,它通过 API 集合公开后端(我使用了 \"ASP.NET Core Web API\" 模板)

在 Visual Studio 中,当我启动应用程序时,我使用“多个启动项目”,因此 Visual Studio 启动 Web 项目(后端)并并行启动 WPF 项目(前端)。

我想打包我的应用程序。目前,我不想在 Windows 商店上发布它,只是将它打包到本地,这称为旁加载。我做到了,它成功地结束了。然后我从本地机器上的包中安装应用程序。

问题:当我启动我的应用程序时,我只是在运行控制台。我从邮递员那里检查过,我的网络项目正确运行。但是 WPF 应用程序没有启动。

在与打包相关的项目(我称之为安装程序)中,我指定了 appxmanifest、temporarykey.pfx 并且在 Dependencies->Applications 中我可以找到我的两个项目(wpf 和 web)

当我右键单击 wpf 时,我可以选择“设置为入口点”。当我重新打包我的应用程序时,wpf 项目启动,但不再是后端的控制台。实际上,当我选择“设置为入口点”时,Web 项目不再是入口点。

所以我的问题是:我如何/是否可以用多个入口点打包一个应用程序?

    标签: c# .net wpf packaging


    【解决方案1】:

    我将假设您在发布时使用 ClickOnce,因为您提到了侧载。 ClickOnce 对单个包中的多个 exe 非常挑剔(只是可能以您的特定方式获得的众多安全机制之一)

    你可以在这里阅读更多关于一些痛点的信息:

    Windows 应用商店在发布时有许多相同的安全限制,因此如果您打算将其用于分发,请自行熟悉。

    其他选项是使用 WIX 或其他安装程序框架自行打包您的 MSI。

    如果您的 WPF 应用程序依赖于控制台应用程序,我建议您将其转换为 Worker Service,以便它始终运行而无需启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 2012-10-25
      • 1970-01-01
      • 2013-05-06
      相关资源
      最近更新 更多