反映旧版本的System.dll

时间:2013-03-18 14:47:21

标签: c# .net reflection uri

我有一个构建活动,它反映了我们的一个库,以便将它与域定义进行比较。在反射过程中,每当我尝试反映Uri时,它都会返回RunTimePropertyInfo而不是Uri,每当我检查任何反射属性时,我都会得到一个异常声明...

"Could not load file or assembly 'System, Version=2.0.5.0, culture=neutral, publickeytoken=7cec85d7bea7798e, retargetable=yes"

使用System.dll版本4.0.0.0编译构建活动。我怀疑这是问题所在。有没有办法让我在旧版本的System.dll上反映一种类型。

到目前为止,这只与Uri失败了。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我认为存在版本问题,如果您使用的是在项目中使用的不同版本的dll,则会发生此类错误。

这里有一个简单的解决方案,过去对我有用,如果有同样的问题,它会对你有用。 您可以通过定义有问题的dll的新旧版本在web.config中使用“ bindingRedirect ”标记。所以这意味着它将忽略旧版本的dll引用并在发现时使用较新的版本。并且不会产生错误。

                                                                   

这是参考链接。 http://msdn.microsoft.com/en-us/library/eftw1fys%28v=vs.71%29.aspx

答案 1 :(得分:0)

您需要使用类似IKVM.Reflection,

的内容

http://weblog.ikvm.net/PermaLink.aspx?guid=d0dc2476-471b-45f3-96bf-a90bc2f5800b

Microsoft的反射与托管的.NET Framework相关联,因此您无法像希望的那样加载旧版本的核心库。