为什么在使用System.Reflection.Assembly.CodeBase属性时突然出现异常?

时间:2010-08-27 14:38:08

标签: c# .net

在下面的片段中,CodeBase属性在程序集System.Xml.Xsl.CompiledQuery上失败,没有其他地方。消息显示“动态程序集中不支持调用的成员”。

我得到CodeBase属性没有实现,我没有得到的是为什么突然这是一个问题。这段代码已经使用了好几个月没有问题突然......


 if( CompareCaseInsensitive( Path.GetFileNameWithoutExtension( assembly.CodeBase ), namespaceURI ) )
    return assembly;

我有几个选项可用于编写代码,但我希望有人能够以可能导致更强大解决方案的方式解释发生的事情。

以后续问题编辑。

有没有办法告诉哪些程序集实现了这个属性,哪些程序没有求助于异常?

1 个答案:

答案 0 :(得分:4)

使用System.Reflection.Emit命名空间类生成的任何代码都没有CodeBase。由于代码未从程序集加载,因此它是在运行时生成的。这当然包括System.Xml.Xsl类,它们使用内部System.Xml.Xsl.XmlILGenerator类,它大量依赖于System.Xml.Xsl.IlGen。很多反思。那里有代码。

我无法猜到为什么之前有效。也许.NET 4.0,不确定。