从另一个项目启动一个项目
本文关键字:项目 一个 另一个 启动 | 更新日期: 2023-09-27 18:32:02
我正在尝试向用户提供可以在本地运行的 WPF 应用程序。
我目前有一个 WebAPI 项目,它充当 API 来正常修改数据库中的数据。这完全按预期工作。
我有一个类库,我编写了一些内部类,这些类是运行我将提供给用户的 WPF 项目所必需的 - 引用了这个类包。
我想创建这个类库,以便提供给它们的 WPF 项目具有最少的可编辑代码,它们可能会更改和破坏应用程序。这一切都很好,设置好了。
我创建的 WPF 项目为用户提供了一个用户界面,用于查看和修改本地数据库(随项目一起提供)中的数据。向用户提供此项目的目的是让他们可以在项目中修改或创建新类,这些类可用于扩展我们的解决方案。
我已经设置了本地数据库、WPF 项目和类库,并按预期工作,但是,我想包含 WebAPI 项目,以便当他们在本地运行 WPF 应用程序时,WebAPI 的实例也在后台本地运行 - 在 .NET 本地 Web 服务器上,就像我在 WebAPI 项目中按运行一样。
但是,这样做的问题是,我宁愿不只是给他们整个 WebAPI 项目来在 WPF 解决方案中加载和运行自己,而是希望 WebAPI 的实例在 WPF 应用程序启动时刚开始,以便他们可以通过 WPF 接口或通过从另一个源向本地运行的 API 发送请求来操作数据库数据。
是否可以在 WPF 应用程序启动时启动 WebAPI 实例(就像我在 WebAPI 项目中按 F5 一样),而无需在 WPF 解决方案中包含 WebAPI 项目?
我想简单地在 WPF 项目中包含一个 WebApi 的 DLL,并在 WPF 应用程序启动时在本地 .NET Web 服务器中启动它的实例。这可能吗?您可以从引用或包含所述 DLL 的另一个独立项目将构建的 DLL 启动到本地 Web 服务器中吗?
我正在研究卡西尼号和其他一些选项,例如将其转换为 EXE,但我认为它们比我需要的要复杂得多,如果有一种更简单的方法,我不想开始改造代码我还没有偶然发现在线。
您可以向他们提供已发布的 WebAPI 文件,并让他们在其本地 IIS 中设置实例,然后让 WPF 项目引用该本地实例。但是,这只有在用户数量相对较少的情况下才可行。
任何想知道如何执行此操作的人,使用 editas idea 将已发布的文件放入一个文件夹中,该文件夹将包含在提供给用户的包中,并在 WPF 应用程序启动调用引用的类库中以使用我编写的方法初始化 API:InitialiseAPI()
。
此方法的工作原理是调用 EXE,该 EXE 在用户计算机上以静默方式启动 IIS Express 实例,并将"已发布"文件附加到该实例。这非常有效,我还创建了应用程序退出方法来在退出时销毁 IIS 实例,因此当他们重新启动应用程序时,它不会抛出正在使用的端口异常。