我使用的是MonoDevelop,我在同一个解决方案中有一个库项目和一个NUnit项目。 NUnit项目引用库并包含我的测试。我想测试的一些行为涉及检查已加载程序集中的类型和方法。我尝试使用AppDomain.CurrentDomain.GetAssemblies()
但是库和NUnit测试都不在这些程序集中。我确信我在这里误解了一些东西,但我希望在这里找到它们。我可以通过调用AppDomain.GetExecutingAssembly()
来调用库,并通过调用AppDomain.GetCallingAssembly()
来测试,但后者根据我读过的内容并不完全可靠(因为可能内联一件事)。
有人可以告诉我为什么执行和调用程序集不在当前应用程序域中吗?是否可以循环包含这两者的程序集集合?我发现an example循环遍历所有应用域,但它需要mscoree,这在MonoDevelop中不可用。
答案 0 :(得分:1)
根据NUnit的文档:https://github.com/nunit/docs/wiki/Assembly-Isolation,程序集将加载到不同的AppDomain中。所以
AppDomain.CurrentDomain.GetAssemblies()
你永远不会得到你的集会。