3

当他们到达这里时,我的单元测试失败了:

var y = AppDomain.CurrentDomain
                 .GetAssemblies()
                 .Where(a => !a.GlobalAssemblyCache)
                 .SelectMany(a => a.GetExportedTypes()
                                   .Where(t => t.IsClass && typeof(ITypeRenderer).IsAssignableFrom(t)))
                 .ToArray();

但是当我在附加调试器的情况下运行测试时,它并没有失败。

我想它必须与反射权限和所有爵士乐有关,知道吗?

例外是:

初始化方法 MyUnitTestProject.UnitTest.Init 抛出异常。System.NotSupportedException:System.NotSupportedException:动态程序集中不支持调用的成员。

异常发生在:

System.Reflection.Emit.InternalAssemblyBuilder.GetExportedTypes()

谢谢。

4

1 回答 1

3

好吧,错误消息确实说“动态程序集中不支持调用的成员”。显然,当您在调试器之外运行测试时,会导致在与运行测试相同的 AppDomain 中创建动态程序集。

同样(希望)显然,检查IsDynamic以排除此类程序集(以与排除 GAC 程序集相同的方式)应该避免错误。

于 2012-04-18T06:46:39.477 回答