gpt4 book ai didi

c# - 从另一个项目运行 .net 核心项目

转载 作者:可可西里 更新时间:2023-11-01 08:09:01 24 4
gpt4 key购买 nike

我有一个包含 3 个项目的解决方案。 Project2 需要 Project1 运行才能正常运行(Project2 调用 Project1 中的一些 Apis)。

Solution
|-- Project1
| |-- Program.cs
| |-- Startup.cs
|-- Project2
| |-- Program.cs
| |-- Startup.cs
|-- IntegrationTestProject

我可以通过更改解决方案的属性来同时运行这两个项目,如下图所示,它运行良好:

enter image description here

我想要的是一种通过代码(从启动或从 Project2 中的 SomeService)从 Project2 运行 Project1 的方法,如果我也可以在停止运行 Project2 时停止 Project1,那就太好了。

我试过这段代码,但它没有启动 Project1:

  string[] x = { };
Project1.Program.Main(x);

编辑:

IntegrationTestProject 用于测试 Project2 Apis。所以我从 Project2 创建了一个 new TestServer()

当我运行集成测试时,一些 API 成功(仅依赖于 Project2 的 API)和其他失败(从 Project1 调用 API 的 API),因为服务器 (Project1) 不可访问(测试运行时它已关闭) ).

如果我在运行 Project1 时运行集成测试,所有测试都会成功。

我尝试使用 new TestServer() 运行 Project1 的测试实例并将其传递给 Project2。它适用于某些 Apis,但我遇到了另一个问题,在我运行 Project1 而不是它的测试实例之前似乎无法解决。

所以我唯一的解决方案是在开始集成测试时运行 Project1。

我制作了一个运行 Project1(通过 dotnet run)的 .bat 文件,然后启动集成测试(通过 dotnet test),它运行良好。但它的问题是当从 Visual Studio 运行集成测试时它没有运行 Project1。

编辑 2:

这是一个演示我遇到的问题的示例项目: https://github.com/bilalseh/SampleSolution

1- 如果您单独运行 Project2 并调用 (Get: "/api/home") 它将返回一个结果。如果你调用 (Get: "/api/home/5") 就会有问题,因为这个 Api 依赖于 Project1。

2- 如果您打开 visual studio 并运行测试(2 个测试)或通过“dotnet test”从命令行运行这些测试,1 个测试将通过(测试:“/api/home”),一个将失败(测试:“/api/home/5”)。

3- 如果您运行 Project1 然后开始测试,两者都会通过。

4- 我在集成测试文件夹中创建了一个名为“run test with temp server.bat”的 .bat 文件。此文件将运行 Project1,然后启动测试,然后停止 Project1。如果您运行此文件,则两个测试都将通过。

我想要的是找到一种从 Project2 或在我开始集成测试时启动 Project1 的方法。

最佳答案

您可以添加对要启动的项目的程序集的引用。

另一种方法是使用 Process.Start() 并放置可执行文件的路径以运行它

在希望打开其他项目的项目上:

Right click References-> Add references -> Solution -> check the project you want to create -> OK

如果编译器要求您添加额外的引用(PresentationFramework、system.xaml ...),或者通过在“类程序”前面添加单词“公共(public)”来使项目 2 Program.cs 公开。

然后添加这个在项目 1 按钮中...

private void button_Click(object sender, EventArgs e)
{
Project_2 pb = new Project_2()
Process.Start(pb.returnPath() + \\"Project_2.exe");
}

编辑:当我在 stackoverflow 中搜索时,您的问题类似于 one

关于c# - 从另一个项目运行 .net 核心项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56786945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com