我目前正在将一个项目及其测试项目从 .Net Framework 迁移到 .Net Core。
在 .Net Framework 中,我们曾经可以像这样设置测试的 EntryAssembly:
AppDomainManager manager = new AppDomainManager();
FieldInfo entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);
entryAssemblyfield.SetValue(manager, assembly);
AppDomain domain = AppDomain.CurrentDomain;
FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);
domainManagerField.SetValue(domain, manager);
摘自这里:https://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/
由于在 .Net Core 中不再提供 AppDomainManager,我们该如何实现类似的功能,以便 Assembly.GetEntryAssembly();
返回我想要的内容而不是测试项目程序集。
Assembly.GetCallingAssembly()
吗? - lukaszberwidAssembly.GetCallingAssembly()
将无法工作,因为我在测试程序集和调用Assembly.GetEntryAssembly()
之间经过了不同的程序集。如果您需要更多关于我的结构的信息,请让我知道,我可以更新我的问题。 - Simon Foley