为什么调用程序集不会显示在c#中的当前应用程序域中?

时间:2016-02-10 19:20:02

标签: c# reflection mono .net-assembly

我使用的是MonoDevelop,我在同一个解决方案中有一个库项目和一个NUnit项目。 NUnit项目引用库并包含我的测试。我想测试的一些行为涉及检查已加载程序集中的类型和方法。我尝试使用AppDomain.CurrentDomain.GetAssemblies()但是库和NUnit测试都不在这些程序集中。我确信我在这里误解了一些东西,但我希望在这里找到它们。我可以通过调用AppDomain.GetExecutingAssembly()来调用库,并通过调用AppDomain.GetCallingAssembly()来测试,但后者根据我读过的内容并不完全可靠(因为可能内联一件事)。

有人可以告诉我为什么执行和调用程序集不在当前应用程序域中吗?是否可以循环包含这两者的程序集集合?我发现an example循环遍历所有应用域,但它需要mscoree,这在MonoDevelop中不可用。

1 个答案:

答案 0 :(得分:1)

根据NUnit的文档:https://github.com/nunit/docs/wiki/Assembly-Isolation,程序集将加载到不同的AppDomain中。所以 AppDomain.CurrentDomain.GetAssemblies()你永远不会得到你的集会。