Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AppDomain.CurrentDomain.GetAssemblys因ReflectionTypeLoadException失败_C#_Reflection - Fatal编程技术网

C# AppDomain.CurrentDomain.GetAssemblys因ReflectionTypeLoadException失败

C# AppDomain.CurrentDomain.GetAssemblys因ReflectionTypeLoadException失败,c#,reflection,C#,Reflection,在单元测试期间,我遇到了以下代码的问题,该代码要求所有加载的程序集: var res = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(x => x.GetTypes()) .ToList(); 此代码因ReflectionTypeLoadException失败,该异常具有模式的内部异常 无法加载类型Microsoft.Xml.Serialization.GeneratedAssembly.FOO 其中FOO是我们也编码的一些特定

在单元测试期间,我遇到了以下代码的问题,该代码要求所有加载的程序集:

var res = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(x => x.GetTypes())
.ToList();
此代码因ReflectionTypeLoadException失败,该异常具有模式的内部异常

无法加载类型Microsoft.Xml.Serialization.GeneratedAssembly.FOO

其中
FOO
是我们也编码的一些特定类

在运行前面的unittests时会出现问题,使用XDocument类创建XML文档


我可能不一定要加载这些代码生成的类(我猜Microsoft.Xml.Serialization.GeneratedAssembly.*是代码生成的。)我只是想了解出了什么问题。

你能打开Fusion log看看为什么程序集无法加载吗


我最后得出结论,为序列化和xmlserialization(以及其他?)生成的运行时代码类对我来说是不感兴趣的。因此,下面的过滤器有帮助

return AppDomain.CurrentDomain.GetAssemblies()
.Where(x => !x.FullName.StartsWith("Microsoft.GeneratedCode"))
.SelectMany(x => x.GetTypes())
.ToList();

您应该检查程序集的IsDynamic字段,该字段可从.netframework 4及更高版本获得

var res = AppDomain.CurrentDomain.GetAssemblies().Where(ass => ass.IsDynamic == false)
.SelectMany(x => x.GetTypes())
.ToList();

我什么也没发现