【问题标题】:Net Core: Find Application Assembly Location from Integration TestNet Core:从集成测试中查找应用程序组装位置
【发布时间】:2019-08-08 06:21:44
【问题描述】:

我们有一个 API 真实应用程序,它运行以下代码来获取程序集目录。

Assembly.GetEntryAssembly().Location

Result:
C:\\OriginalApplicationAPI\\bin\\Debug\\netcoreapp2.2

现在我们正在运行一个集成 Xunit 项目,该项目正在运行原始项目的启动、应用程序设置等。

从集成测试项目渲染运行此代码,

C:\\Users\\..\\.nuget\\packages\\microsoft.testplatform.testhost\\15.9.0\\lib\\netstandard1.5"

如何从测试项目中引用 OriginalApplicationAPI 程序集位置?是通过命名空间还是项目引用?

谢谢,

【问题讨论】:

  • 使用 Assembly.GetExecutingAssembly().Location 应该会为您提供正确的程序集路径。
  • 如果它没有执行呢?我只需要通过项目引用或命名空间来引用其他程序集
  • 嗯 :-) 你需要知道程序集中的类型,让我们假设 App.MyClass 是在程序集中定义的。您可以拨打Assembly.GetAssembly(typeof(App.MyClass)).Location。您不能在 namespace 上执行此操作,因为命名空间可以存在于多个程序集中。您需要一个实际的类型来获得正确的程序集。
  • 嗨@SimplyGed 随时写答案,我可以发送积分,谢谢!

标签: c# asp.net-core .net-core xunit


【解决方案1】:

您需要知道程序集中的类型。

假设App.MyClass 在程序集中定义。您可以使用反射来获取包含该类型的程序集的位置:

Assembly.GetAssembly(typeof(App.MyClass)).Location. 

你不能使用命名空间来做到这一点,因为命名空间可以存在于多个程序集中。

或利用

Assembly.GetExecutingAssembly().Location

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    相关资源
    最近更新 更多