草庐IT

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

coder 2024-05-25 原文

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

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

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

我想要的是一种通过代码(从启动或从 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/

有关c# - 从另一个项目运行 .net 核心项目的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  3. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  4. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  5. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  6. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

  7. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  8. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  9. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  10. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

随机推荐